У меня есть следующее дерево
# upper letters = directory
# lower letters = files
A
|-- B
|-- C
|-- D
|-- e <= file
|-- F
|-- G
Мне нужно скопировать это дерево в другое место назначения, рекурсивно игнорируя все пустые каталоги. Таким образом, пункт назначения выглядит так:
C
|-- e
Как бы вы это сделали с помощью unix, rsync и т. Д.?
Конечно, через несколько минут я открываю простой способ. rsync
имеет --prune-empty-dirs
вариант.
Существуют различные решения этой проблемы (Взято из эта веб-страница):
Эта опция использует команду mkdir с командой find. Этот метод также требует, чтобы вы находились внутри исходной папки при выполнении команды.
bash$ cd /path/to/source && find . -type d -exec mkdir -p /path/to/dest/{} ;
Использование find и cpio
bash$ find /path/to/source -type d | cpio -pd /path/to/dest/
Использование Rsync
bash$ rsync -a --include '*/' --exclude '*' /path/to/source /path/to/dest
ИЛИ
bash$ rysnc -a -f"+ */" -f"- *" /path/to/source /path/to/dest