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