Câu trả lời:
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
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
cách khác để cp
bạn có thể sử dụng rsync
với một --exclude=PATTERN
.