Cách tôi đã làm điều này trong quá khứ là sử dụng hắc ín
với tư cách là người đi giữa -- nhưng tôi chắc chắn rằng có những câu trả lời khác hay hơn câu trả lời này.
Nơi chúng tôi có một danh sách các tệp đáp ứng một tiêu chí cụ thể IE: tất cả các tệp trong /usr nhỏ hơn 1M
$ find /usr -type f -size -1M
Mà chúng tôi muốn sao chép vào vị trí /mnt/dst
.
Bạn có thể sử dụng tar làm vectơ để đóng gói/giải nén dữ liệu. I E
$ find /usr -type f -size -1M | tar --files-from=- -c | tar -xv -C /mnt/dst
đầu tiên hắc ín
lấy cái --files-từ
trong đó mong đợi một danh sách từng dòng của các đường dẫn đầy đủ đến các tệp và tạo một tarball cho thiết bị xuất chuẩn.
Thư hai hắc ín
chuyển sang đường dẫn đích với -C
và giải nén tarball nhận được từ đường ống.
Điều này dẫn đến đầu ra sau (khi sử dụng -v
trong lệnh tar thứ hai).
usr/lib/grub/i386-pc/fdt.lst
usr/lib/python3.6/site-packages/pip/_vendor/html5lib/filters/__init__.py
usr/lib/python3.6/site-packages/pip/_vendor/urllib3/contrib/__init__.py
usr/lib/python3.6/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__init__.py
usr/lib/python3.6/site-packages/pip/_vendor/urllib3/packages/backports/__init__.py
usr/lib/python3.6/site-packages/pip/operations/__init__.py
usr/lib/python3.6/site-packages/pkg_resources/_vendor/__init__.py
usr/lib/python3.6/site-packages/setuptools/_vendor/__init__.py
usr/lib/python3.6/site-packages/slip/__init__.py
usr/lib/python3.6/site-packages/slip/_wrappers/__init__.py
usr/lib/python3.6/site-packages/asn1crypto/_perf/__init__.py
...
...
Thư mục đích kết quả tạo ra cây (được cắt tỉa để dễ đọc), đây sẽ là thứ bạn đang tìm kiếm..
# cây -L 3 /mnt/dst
/mnt/dst
âââ usr
âââ lib
â  âââ grub
â âââ node_modules
â âââ python3.6
âââ lib64
â âââ python3.6
âââ địa phương
â  âââ chia sẻ
âââ chia sẻ
âââ chính sách tiền điện tử
âââ doc
âââ gừ gừ
âââ microcode_ctl
âââ kịch câm
âââ pki
âââ texlive
âââ texmf
âââ vim
âââ X11
20 thư mục, 0 tập tin