UNIX, как поддерживать структуру каталогов?

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

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

3 ответа

Решение

Трудная часть вашего вопроса (как составить список только конечных каталогов) была задана ранее на 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
cd bar1
find . -type d -exec mkdir -p '../bar2/{}' \;

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

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

что более многословно:

rsync --verbose --recursive --include '*/' --exclude '*' bar1 bar2
Другие вопросы по тегам