cp -r không có tệp ẩn


89

Tôi có hai thư mục và một thư mục trống.

Thư mục đầu tiên có nhiều thư mục con với các tệp ẩn. Khi tôi chuyển cp -rnội dung từ thư mục đầu tiên sang thư mục thứ hai, các tệp ẩn cũng được sao chép. Bất kỳ giải pháp để thoát khỏi chúng?


nó doable, nhưng loại bỏ chúng sau khi sao chép có thể được đơn giản
Karoly Horvath

6
vâng, nhưng việc chuyển các tệp ẩn sang các vị trí khác là một mối nguy hiểm về bảo mật trong trường hợp của tôi.
Rahul

Câu trả lời:


127

Bạn có thể sử dụng rsync:

rsync -av --exclude=".*" src dest

1
Bất kỳ chi phí nào khi so sánh với cp?
Rahul

2
@Rahul Nó đã không xảy ra với tôi để benchmark nó, nhưng tôi nghĩ bạn không nên lo lắng về điều đó
Eugene Yarmash

3
Nó hoạt động tuyệt vời! Cảm ơn anh bạn! Đối với thông tin, rsync sẽ rất tốt khi kích thước tệp lớn, nhưng bằng cp trong trường hợp tệp nhỏ hơn.
Rahul

26

Bạn có thể làm

cp -r SRC_DIR/* DEST_DIR

để loại trừ tất cả các tệp .files và .dirs ở cấp SRC_DIR, nhưng nó vẫn sao chép bất kỳ tệp ẩn nào trong cấp thư mục con tiếp theo.


6
Đó chính xác là vấn đề .. :)
Rahul

9
Nhưng nó hoạt động cho GIT-Repos, nếu bạn không thể sao chép toàn bộ GIT-Index trong .git / ...
Sedat Kilinc

1
Tôi đã chọn câu trả lời này vì đây là giải pháp tôi đang tìm kiếm. Tôi không muốn loại trừ tất cả những phần vô hình trên cây, chỉ những phần vô hình ở cấp độ gốc!
l008com

Một biến thể khác cp SOURCE/[!.]* TARGET.
Carel

4

rsync có tùy chọn "-C"

http://rsync.samba.org/ftp/rsync/rsync.html

Thí dụ:

rsync -vazC  dir1 dir2

Bạn đúng rồi. Tôi đã thử mkdir -p dir1 / subir; chạm vào dir1 / subir / .cvs; rsync -avzC dir1 dir2
slitvinov

rsync -av --exclude = ". *" src dest hoạt động tốt. Tham khảo câu trả lời ở trên của eugene. Dẫu sao cũng xin cảm ơn! :)
Rahul
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.