Xóa các tệp phù hợp trong tất cả các thư mục con


77

Làm cách nào tôi có thể xóa tất cả các tệp .swp trong tất cả các thư mục con của mình trong Linux?


3
Đừng quên xem các chương trình như thùng rác để bạn có thể phục hồi, thay vì sử dụng rm. code.google.com/p/trash-cli (Bạn chỉ cần thay 'rm' bằng 'thùng rác' trong tất cả các câu trả lời dưới đây.)

Câu trả lời:


137

Xóa tất cả các tệp * .swp bên dưới thư mục hiện tại, sử dụng findlệnh theo một trong các hình thức sau:

  • find . -name \*.swp -type f -delete

    Các -deletetùy chọn có nghĩa là tìm thấy sẽ trực tiếp xóa các tập tin phù hợp. Đây là kết quả phù hợp nhất với câu hỏi thực tế của OP.

    Sử dụng -type fcó nghĩa là tìm sẽ chỉ xử lý các tập tin.

  • find . -name \*.swp -type f -exec rm -f {} \;
    find . -name \*.swp -type f -exec rm -f {} +

    Tùy chọn -execcho phép tìm để thực thi một lệnh tùy ý cho mỗi tệp. Biến thể đầu tiên sẽ chạy lệnh một lần cho mỗi tệp và biến thứ hai sẽ chạy càng ít lệnh càng tốt bằng cách thay thế {}bằng càng nhiều tham số càng tốt.

  • find . -name \*.swp -type f -print0 | xargs -0 rm -f

    Đường ống đầu ra đến xargsđược sử dụng dưới dạng các lệnh trên mỗi tệp phức tạp hơn mức có thể với -exec. Tùy chọn -print0yêu findcầu phân tách các kết quả khớp với ASCII NULL thay vì một dòng mới và -0nói xargsđể mong đợi đầu vào được phân tách bằng NULL. Điều này làm cho đường ống xây dựng an toàn cho tên tệp chứa khoảng trắng.

Xem man findđể biết thêm chi tiết và ví dụ.


16

find . -name '*.swp' -delete

Việc tìm kiếm tự xóa sẽ loại bỏ mọi rủi ro cho không gian được nhúng trong tên tệp, ... Để bảo mật hơn, cũng nên xem xét thêm -type fcho các tệp.


4
find /path -type f -name "*.swp" -delete
find /path -type f -name "*.swp" -exec rm -f "{}" +;

bash 4.0

shopt -s globstar
rm -f /path/**/*.swp

2

Để tìm kiếm trong thư mục nhà của tôi (và sử dụng GNU 'find' và 'xargs'), tôi sử dụng:

find $HOME -name '*.swp' -print0 | xargs -0 rm -f

Việc sử dụng ' -print0' và ' -0' có nghĩa là các tên sẽ được phân cách bằng các ký tự ASCII NUL '\ 0' và điều này sẽ xử lý các đường dẫn tệp có khoảng trắng, v.v. trong tên. Nếu bạn nghĩ rằng bạn có thể có các thư mục (hoặc tệp thiết bị, hoặc FIFO hoặc các tệp không phải tệp khác) trong thư mục của bạn kết thúc bằng '.swp', bạn có thể thêm -type ftùy chọn '' vào 'find'. Nếu bạn chỉ có thư mục, lệnh trên sẽ không xóa chúng một cách ồn ào.

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.