UNIX, как поддерживать структуру каталогов?
Я хочу создать пустую структуру каталогов bar2
из непустого дерева каталогов bar1
, И то и другое bar1
а также bar2
находятся на том же уровне иерархии. Как я могу использовать mkdir
эффективным образом, чтобы промежуточные каталоги создавались автоматически?
- Создать список каталогов из bar1 с find и заказать его при необходимости.
- С помощью
awk
, удалите все ветви из списка, чтобы я мог запускать `mkdir только на листьях. - Бежать
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
Вы можете вместо этого использовать rsync:
rsync -r -f '+ */' -f '- *' bar1 bar2
что более многословно:
rsync --verbose --recursive --include '*/' --exclude '*' bar1 bar2