Linux: Sao chép tất cả các tệp bằng phần mở rộng vào thư mục đơn


8

Tôi đang cố gắng sao chép tất cả *.tifcác tệp từ ./old sang ./new. Trong ./old tôi có rất nhiều thư mục con với các tệp khác nhau và trong ./new tôi chỉ cần các tệp TIF, không có cây thư mục. Vì vậy, tôi đã thử cp -vR ./old/*.TIF ./newvà gặp lỗi:

No such file file or dirrectory "./old/*.TIF"

Tôi đang làm gì sai?

Câu trả lời:


11

Sử dụng tìm cho điều này find . -name "*.TIF" -exec cp {} new \;

Vì vậy, findđược sử dụng để tìm tập tin. Lệnh đang nói findcác tệp bắt đầu từ đây ., nơi tên của tệp -namekết thúc bằng cách .tifnhớ các dấu ngoặc kép để mở rộng shell. Vì vậy, để tìm tất cả các tiftập tin là đơn giản.

find . -name "*.tif"
./2/3/3.tif
./2/2.tif
./1.tif

Sau đó, chúng tôi sử dụng -execđể làm một cái gì đó với các tệp trong trường hợp này cptìm thấy các tệp {}vào thư mục đích newtheo sau là một dấu chấm phẩy thoát\;



0

trong thư mục cũ (trực tiếp) bạn có thể không có bất kỳ tệp .tif nào.

hơn nữa, bạn có thể lấy danh sách các tập tin và sao chép chúng bằng một tập lệnh đơn giản

find /old -type f | xargs grep *.tif sẽ cung cấp cho bạn danh sách

bạn có thể làm như

for i in `find /old -type f | xargs grep *.tif` 
do
cp $i /new
done;
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.