Skopiować drzewo katalogów bez pustych katalogów?


17

Mam następujące drzewo

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

Muszę skopiować to drzewo do innego miejsca docelowego, rekurencyjnie ignorując wszystkie puste katalogi. Więc miejsce docelowe wygląda następująco:

C
|-- e

Jak zrobiłbyś to z Unixem, rsync itp.?

Odpowiedzi:


29

Oczywiście kilka minut później odkrywam łatwą metodę. rsyncma --prune-empty-dirsopcję.


1

Istnieją różne rozwiązania tego problemu (zaczerpnięte z tej strony internetowej ):

Ta opcja używa polecenia mkdir z poleceniem find. Ta metoda wymaga również, abyś był w folderze źródłowym podczas wykonywania polecenia.

bash$ cd /path/to/source && find . -type d -exec mkdir -p /path/to/dest/{} ;

Używanie find i cpio

bash$ find /path/to/source -type d | cpio -pd /path/to/dest/

Korzystanie z Rsync

bash$ rsync -a --include '*/' --exclude '*' /path/to/source /path/to/dest

LUB

bash$ rysnc -a -f"+ */" -f"- *" /path/to/source /path/to/dest

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.