đệ quy sao chép tất cả các tệp từ thư mục này sang thư mục khác với ngoại lệ


8

Làm thế nào để tôi cần sao chép tất cả các tập tin ngoại trừ một vài thư mục từ thư mục này sang thư mục khác. ví dụ:

cp -R test /www/test2 would copy all

Nhưng tôi muốn loại trừ 2 thư mục được gọi là log và log.

Tôi đã thử một cái gì đó như:

find ~test -not -name logs,log |  cp -R test /www/test2 

Nhưng bạn có thể giúp tôi với cú pháp?

Câu trả lời:


10

Sử dụng rsync:

rsync -a --exclude=logs --exclude=log from/ to/

các rynsc kinda làm việc mát mẻ cho tôi!
Micheal

rsync bây giờ là bạn mới của tôi :) Cảm ơn, lời giải thích gọn gàng
Aleks

2

Tôi nghĩ rằng bạn đang tìm kiếm một cái gì đó như:

find dir -type d ! \( -name 'log' -o -name 'logs' \) | xargs -I{} cp -R {} /www/test2/{}

@sputnick xem những thay đổi của tôi. Vui lòng cung cấp regex emacs cho điều này nếu bạn tình cờ biết nó.
Tim Pote

0

Nếu sử dụng :

shopt -s extglob
cp -R test/!(log|logs) /www/test2

Xem http://wiki.bash-hackers.org/syntax/potype


Điều gì xảy ra khi cấu trúc là như vậy : test/someotherdir/logs? OP không bao giờ nói loglogslà thư mục cao thứ hai.
Tim Pote

Nếu bạn đọc lại find ~test -not -name logs,lognhật ký lệnh OP & nhật ký thì nên là một thư mục con.
Gilles Quenot

findnhìn đệ quy thông qua tất cả các thư mục con. Tập tin globalbing không. Để câu trả lời của bạn hoạt động, loglogssẽ phải là thư mục con ngay lập tứctest .
Tim Pote
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.