2010-11-10 4 views
1

Я хочу создать пустую структуру каталога bar2 из непустого дерева каталогов bar1. Оба bar1 и bar2 находятся на одном уровне иерархии. Как я могу эффективно использовать mkdir, чтобы создать промежуточные каталоги?UNIX, как сохранить структуру каталогов?

  1. Чтобы создать список каталогов из bar1 с помощью поиска и заказа, при необходимости.
  2. Используя awk, удалите все ветки из списка, чтобы я мог запускать `mkdir только на листах.
  3. Run mkdir со списком, чтобы повторить структуру каталогов BAR1
+0

Почему необходимо идентифицировать только листья? – Xailor

ответ

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

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

Ах, избили меня. – cdhowie

+0

Это не удаляет листья, он запускает mkdir для каждого каталога –

+0

Er. s/leaves/branches/в моем комментарии. То есть для структуры каталогов bar2/a/b/c он будет запускать три mkdirs вместо одного –

2

Вы можете использовать rsync вместо:

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

который, более многословным:

rsync --verbose --recursive --include '*/' --exclude '*' bar1 bar2 
Смежные вопросы