Verzeichnisbaum ohne leere Verzeichnisse kopieren?

17

Ich habe den folgenden Baum

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

Ich muss diesen Baum in ein anderes Ziel kopieren und dabei alle leeren Verzeichnisse rekursiv ignorieren. Das Ziel sieht also so aus:

C
|-- e

Wie würden Sie dies mit Unix, Rsync usw. tun?

Dane O'Connor
quelle

Antworten:

29

Natürlich entdecke ich Minuten später eine einfache Methode. rsynchat eine --prune-empty-dirsOption.

Dane O'Connor
quelle
1

Es gibt verschiedene Lösungen für dieses Problem (von dieser Webseite übernommen ):

Diese Option verwendet den Befehl mkdir mit dem Befehl find. Diese Methode setzt auch voraus, dass Sie sich während der Ausführung des Befehls im Quellordner befinden.

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

Verwenden von find und cpio

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

Verwenden von Rsync

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

ODER

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

VL-80
quelle