UNIX, как поддерживать структуру каталогов? - PullRequest
1 голос
/ 10 ноября 2010

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

  1. Создать список каталогов из bar1 с find и при необходимости заказать его.
  2. Используя awk, удалите все ветви из списка, чтобы я мог запускать `mkdir только на листьях.
  3. Запустите mkdir со списком, чтобы скопировать структуру каталогов bar1

Ответы [ 3 ]

6 голосов
/ 10 ноября 2010
cd bar1
find . -type d -exec mkdir -p '../bar2/{}' \;
2 голосов
/ 10 ноября 2010

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

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

, что более подробный :

rsync --verbose --recursive --include '*/' --exclude '*' bar1 bar2
2 голосов
/ 10 ноября 2010

Сложная часть вашего вопроса (как составить список только конечных каталогов) была задана ранее на 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...