Tại dòng lệnh Linux, tôi muốn sao chép một tập hợp các .txt
tệp (rất lớn) từ một thư mục (và các thư mục con của nó) sang thư mục khác.
Tôi cần cấu trúc thư mục để giữ nguyên và tôi cần bỏ qua các tệp ngoại trừ các tệp kết thúc bằng .txt
.
Tại dòng lệnh Linux, tôi muốn sao chép một tập hợp các .txt
tệp (rất lớn) từ một thư mục (và các thư mục con của nó) sang thư mục khác.
Tôi cần cấu trúc thư mục để giữ nguyên và tôi cần bỏ qua các tệp ngoại trừ các tệp kết thúc bằng .txt
.
Câu trả lời:
cd /source/path
find -type f -name \*.txt -exec install -D {} /dest/path/{} \;
.
sau find
. Cũng trên macOS 10.13.1, điều này đã hoạt động:find . -type f -name "*.txt" -exec install -v {} /dest/path/{} \;
Làm thế nào về bạn đầu tiên sao chép nó với
cp -r /old/folder /new/folder
sau đó vào thư mục mới và chạy
find . -type f ! -iname "*.txt" -delete
hoặc chỉ
cp -r /old/folder /new/folder && find . -type f ! -iname "*.txt" -delete
Chỉnh sửa: ok bạn muốn có một lệnh lọc (Tôi chưa kiểm tra điều này vì hệ thống của tôi không có cpio
lệnh!). Đây là nơi tôi tìm thấy nó: http://www.gnu.org/software/findutils/manual/html_mono/find.html#Copying-A-Subset-of-Files
find . -name "*.txt" -print0 |
cpio -pmd0 /dest-dir
Vui lòng kiểm tra cái này trước, vì tôi chưa thử. Nếu ai đó sẽ xác minh, đó sẽ là tuyệt vời.
0
trong -pmd0
và thêm -print0
vào phần cuối của find
lệnh (ngay trước |
).
Tôi đã cố gắng làm điều tương tự trên macOS, nhưng không có lựa chọn nào thực sự hiệu quả với tôi. Cho đến khi tôi phát hiện ra ditto
.
Tôi đã phải sao chép nhiều tệp .wav và để nó bỏ qua các tệp Video ... Vì vậy, đây là những gì tôi nghĩ ra:
find . -type f -iname "*.wav" -ls -exec ditto {} /destination/folder/{} \;
find .
- Chạy tìm trong thư mục hiện tại. hãy chắc chắn rằng bạn cd /source/folder
trước khi bắt đầu
-type f
- Chỉ định chỉ tìm tệp
-iname "*.wav"
- Điều này bảo nó tìm trường hợp không nhạy cảm * .wav-ls
- Điều này cho bạn thấy các tập tin mà nó đang làm việc. Mặt khác, nó không hiển thị gì cả.-exec ditto {} /destination/folder/{} \;
- Có phải tất cả các công việc sao chép và tạo các tệp với cùng một cây thư mục.Điều hướng đến thư mục:
find . -regex '<regexp_to_get_directories_and_files_you_want>' | xargs -i cp -r --parents {} path/to/destination
Nó hơi đơn giản hơn về phía trước và hùng mạnh, nếu bạn quản lý các biểu thức thông thường.
Điều hướng đến thư mục:
cp '*.css' /path/to/destination
Bạn sẽ phải điều hướng đến từng thư mục trong thư mục, nhưng điều này tốt hơn hầu hết các tùy chọn tôi đã thấy cho đến nay.