Làm thế nào tôi có thể sao chép một tập hợp con các tập tin từ một thư mục trong khi bảo tồn cấu trúc thư mục?


8

Tôi muốn chuyển một số tập hợp con của tập tin từ dirA sang dirB (giả sử các tập tin có "blah" trong tên tệp), nhưng tôi muốn tất cả các thư mục lồng nhau giống nhau ở vị trí mới. Làm thế nào tôi có thể làm điều đó?


Câu trả lời:


9

Sự kỳ diệu của rsyncquy tắc lọc:

$ rsync -av --filter="+ */" --filter="-! *blah*" /source /dest

Tham khảo rsynctrang hướng dẫn để biết chi tiết về các quy tắc bộ lọc, nhưng đây là phiên bản thu gọn cho nhu cầu cụ thể này.

--filter="+ */" có nghĩa là "bao gồm tất cả mọi thứ là một thư mục"

--filter="-! *blah* có nghĩa là "loại trừ mọi thứ KHÔNG bao gồm blah trong tên tệp"


3

Nếu bạn cần sao chép những tập tin này thì cp sẽ làm:

cd dirA
find . -iname "*blah*" | xargs -If cp --parents f dirB

Tùy chọn --parentsbảo tồn các thư mục con - nó tạo đường dẫn thư mục đầy đủ cho đích.


cú pháp ở đây rõ ràng hơn nhiều so với rsync
Matěj Šmíd

0

Điều này làm việc cho tôi:

rsync -ave 'ssh -p 22' --filter="+ */" --exclude="*_blah.blah" uid@555.55.555.55:/source/directory/ /destination/directory/

Các -eđịnh nghĩa công tắc rsyncchuyển giao thức với cổng như -p 22. Ngoài ra, dấu /gạch chéo rất quan trọng để cho chương trình biết nó đang xử lý các thư mục.

Cảm ơn @pdo vì đã thêm giờ trong ngày làm việc của tôi!

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.