Sao chép cây thư mục mà không có thư mục trống?


17

Tôi có cây sau

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

Tôi cần sao chép cây này sang đích khác, đệ quy bỏ qua tất cả các thư mục trống. Vì vậy, điểm đến kết thúc giống như:

C
|-- e

Làm thế nào bạn sẽ làm điều này với unix, rsync, vv?

Câu trả lời:


29

Tất nhiên vài phút sau tôi phát hiện ra một phương pháp dễ dàng. rsynccó một --prune-empty-dirslựa chọn.


1

Có nhiều giải pháp cho vấn đề này (Lấy từ trang web này ):

Tùy chọn này sử dụng lệnh mkdir với lệnh find. Phương pháp này cũng yêu cầu bạn ở trong thư mục nguồn trong khi thực hiện lệnh.

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

Sử dụng tìm và cpio

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

Sử dụng Rsync

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

HOẶC LÀ

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.