2010-11-10 93 views
1

我想從非空目錄樹bar1創建一個空目錄結構bar2bar1bar2都處於相同的層級。如何以有效的方式使用mkdir以便自動創建中間目錄?UNIX,如何維護目錄結構?

  1. 若要從bar1創建一個目錄列表並進行查找,並在必要時進行訂購。
  2. 使用awk,從列表中刪除所有分支,以便我只能在葉子上運行`mkdir。
  3. 運行mkdir與列表複製BAR1
  4. 的目錄結構
+0

爲什麼只需要識別葉子? – Xailor 2010-11-10 17:12:42

回答

2

你的問題的困難的部分(如何只列出目錄葉)一直asked before on SO。你可以在那裏使用find/awk組合和每個結果運行mkdir -p

[bar1] $ find . -type d | sort | awk '$0 !~ last {print last} {last=$0} END {print last}' | xargs -Ix mkdir -p ../bar2/x 
+0

謝謝,這非常有幫助 – HelloWorld 2010-11-11 01:01:00

6
cd bar1 
find . -type d -exec mkdir -p '../bar2/{}' \; 
+0

啊,打我吧。 – cdhowie 2010-11-10 17:04:27

+0

這不會刪除葉子,它爲每個目錄運行mkdir – 2010-11-10 17:07:02

+0

呃。 s/leaves/branches /在我的評論中。也就是說,對於目錄結構bar2/a/b/c,它將運行三個mkdirs而不是一個 – 2010-11-10 17:14:26

2

您可能需要使用rsync代替:

rsync -r -f '+ */' -f '- *' bar1 bar2 

是,更詳細

rsync --verbose --recursive --include '*/' --exclude '*' bar1 bar2