Làm cách nào để tôi đệ quy chạm vào các tệp khớp với một mẫu


8

Trong thư mục ~ / docs của tôi, tôi muốn "chạm" vào tất cả các tệp kết thúc bằng .txt

Tôi có thể làm cái này như thế nào?

Câu trả lời:


20

Với find:

find ~/docs -name "*.txt" -exec touch {} \;
  • Bạn tìm kiếm trong ~/docs
  • Các nametùy chọn sẽ phù hợp với tất cả txtcác file -  execsẽ thực hiện lệnh touchvào tên tập tin, mà được thay thế trong{}
  • \;kết thúc lệnh và touchsẽ được gọi một lần cho mỗi tệp được tìm thấy

Ghi chú:

  • Một biến thể nhỏ, \+ở cuối xây dựng một lệnh duy nhất để chạy touchtrên tất cả các tệp này cùng một lúc. Điều này là không thể với tất cả các lệnh, nhưng nó hoạt động touchvà tiết kiệm cho bạn một vài cuộc gọi nếu bạn có nhiều tệp bị ảnh hưởng.

4
{} \+sẽ tốt hơn ở đây ... touchcó thể xử lý nhiều tên tệp trên dòng lệnh của nó, vì vậy, ví dụ, với 10 nghìn tệp và {} \; 10 nghìn cuộc gọi sẽ được thực hiện để touch... Sử dụng {} \+sẽ touchchỉ gọi một lần (tùy thuộc vào bộ nhớ khả dụng) ... Tại đây là một đoạn trích từ trang man của find : -exec command {} + ... The command line is built in much the same way that xargs builds its command lines. Có nhiều chi tiết hơn trong man findtài liệu.
Peter.O

@ Peter.O Đúng, chỉ là thói quen của tôi để sử dụng cú pháp khác.
slhck

@slhck: Và chậm hơn nhiều với chi phí cao hơn.
Hello71
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.