sao chép đệ quy trừ thư mục ẩn


13

Làm cách nào để sao chép đệ quy like cp -rf *, nhưng loại trừ các thư mục ẩn (thư mục bắt đầu bằng.) Và nội dung của chúng?

Câu trả lời:


6

Bạn chỉ có thể sao chép mọi thứ với

cp -rf 

và sau đó xóa các thư mục ẩn tại đích với

find -type d -name '.*' -and -not -name '.' -print0 | xargs -0 rm -rf

Ngoài ra, nếu bạn có một số tar nâng cao (ví dụ: GNU tar), bạn có thể thử sử dụng tar để loại trừ một số mẫu. Nhưng tôi e rằng không thể chỉ loại trừ các thư mục ẩn, mà bao gồm các tệp ẩn.

Ví dụ như một cái gì đó như thế này:

tar --exclude=PATTERN -f - -c * | tar -C destination -f - -x

Btw, GNU tar có một sở thú loại trừ các tùy chọn kiểu. Sở thích của tôi là

--exclude-vcs

30

Các tùy chọn tốt để sao chép cây thư mục ngoại trừ một số tệp là:

  • rsync : về cơ bản là cp cộng với rất nhiều khả năng loại trừ.

    rsync -a --exclude='.*' /source/ /destination
    
  • pax : nó có một số khả năng loại trừ và nó có trong POSIX nên có sẵn ở mọi nơi (ngoại trừ một số bản phân phối Linux không bao gồm nó trong cài đặt mặc định của chúng vì một số lý do).

    cd /source && mkdir -p /destination && \
    pax -rw -pp -s '!.*/\..*!!'  . /destination
    

8

cách khác để cpbạn có thể sử dụng rsyncvới một --exclude=PATTERN.

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 cookie và Chính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.