Копировать дерево каталогов без пустых каталогов?

17

У меня есть следующее дерево

# upper letters = directory
# lower letters = files
A
|-- B
|-- C
    |-- D
    |-- e <= file
|-- F
    |-- G

Мне нужно скопировать это дерево в другое место назначения, рекурсивно игнорируя все пустые каталоги. Таким образом, пункт назначения выглядит примерно так:

C
|-- e

Как бы вы сделали это с Unix, Rsync и т. Д.?

Дейн О'Коннор
источник

Ответы:

29

Конечно, через несколько минут я обнаружил простой метод. rsyncесть --prune-empty-dirsвариант.

Дейн О'Коннор
источник
1

Существуют различные решения этой проблемы (взято с этой веб-страницы ):

Эта опция использует команду 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

VL-80
источник