Salin pohon direktori tanpa direktori kosong?

17

Saya memiliki pohon berikut

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

Saya perlu menyalin pohon ini ke tujuan lain, secara rekursif mengabaikan semua direktori kosong. Jadi tujuan akhirnya tampak seperti:

C
|-- e

Bagaimana Anda melakukan ini dengan unix, rsync, dll?

Dane O'Connor
sumber

Jawaban:

29

Tentu saja beberapa menit kemudian saya menemukan metode yang mudah. rsyncmemiliki --prune-empty-dirsopsi.

Dane O'Connor
sumber
1

Ada berbagai solusi untuk masalah ini (Diambil dari halaman web ini ):

Opsi ini menggunakan perintah mkdir dengan perintah find. Metode ini juga mengharuskan Anda berada di dalam folder sumber saat menjalankan perintah.

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

Menggunakan find dan cpio

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

Menggunakan Rsync

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

ATAU

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

VL-80
sumber