Tôi đang cố gắng sao chép tất cả các tệp và thư mục từ thư mục này sang thư mục khác, nhưng loại trừ một số tệp nhất định. Cụ thể, tôi muốn loại trừ các tập tin và thư mục subversion. Tuy nhiên, tôi muốn một giải pháp chung chung nhưng súc tích.
Tôi tưởng tượng tôi sẽ thấy cần phải loại trừ một số loại tệp trong tương lai gần. Ví dụ: tôi có thể muốn loại trừ .svn, * .bak và * .prj.
Đây là những gì tôi đã kết hợp với nhau, nhưng nó không hiệu quả với tôi. Phần đầu tiên, tìm tác phẩm, nhưng tôi đang làm gì đó sai với xargs và cp . Tôi đã thử cp có và không có -R
. Ngoài ra, tôi đang sử dụng OS X và nó dường như có phiên bản xargs ít tính năng hơn các hệ thống linux.
find ./sourcedirectory -not \( -name .svn -a -prune \)
| xargs -IFILES cp -R FILES ./destinationdirectory
-R
cờ, tôi khá chắc chắn. Xóa cái đó đi và bạn sẽ ổn thôi (mặc dù bạn có thể muốn thêm -mindepth 1
vào để bỏ qua thư mục thư mục toplevel mà bạn không muốn sao chép, tôi giả sử)
find
lệnh của bạn sử dụng đúng cách-prune
để loại trừ các mục .svn, thì bạn sẽ chuyển-R
cờcp
cho lệnh đó được đệ quy. Khi làm như vậy, bạn sẽ mất bất kỳ mức độ chi tiết nào bạn có trongfind
lệnh. Tôi sẽ sửa lại điều này trong một phút, nhưng tôi nghĩ câu trả lời là không sử dụng-R
trongcp
lệnh.