Unix ma thuật, xóa tất cả các tập tin .pyc khỏi một cây thư mục?


11

Có cách nào nhanh chóng để xóa tất cả các tệp .pyc khỏi cây thư mục không?

Câu trả lời:


28

Nếu bạn đã tìm thấy GNU thì có lẽ bạn muốn

find <directory name> -name '*.pyc' -delete

Nếu bạn cần một cái gì đó di động thì tốt hơn bạn nên

find <directory name> -name '*.pyc' -exec rm {} \;

Nếu tốc độ là một vấn đề lớn bạn đã có GNU find và GNU xargs thì

find <directory name> -name '*.pyc' -print0|xargs -0 -p <some number greater than 1> rm

Tuy nhiên, điều này khó có thể mang lại cho bạn nhiều tốc độ, do thực tế là bạn sẽ chờ đợi vào I / O.


hoàn hảo ... cảm ơn. Đó là xargs tôi luôn quên
interstar

2
Chỉ trong trường hợp tôi có các tệp có khoảng trắng trong tên, tôi đã có thói quen luôn sử dụng -print0 và "xargs -0".
Paul Tomblin

Bạn hoàn toàn đúng, nên nghĩ về điều đó ban đầu., Được chỉnh sửa để phản ánh điều đó.
Cian

4
Bạn cũng có thể trực tiếp sử dụng '-delete' thay vì '-print0 | xargs -0 rm '. Nhưng đó là sự thật rằng tùy chọn này không có trong tất cả các phiên bản 'tìm'.
rolaf

6

sử dụng lệnh find:

find /path/to/start -name '*.pyc' -exec rm -f {} \;

Điều đó quá chậm. Sử dụng xargs nhanh hơn hoặc nếu phiên bản tìm kiếm của bạn hỗ trợ nó, hãy thay đổi " \;" ở cuối thành " +".
Tạm dừng cho đến khi có thông báo mới.

1
Nó có thể chậm hơn một chút - nó chạy "rm" một lần cho mỗi tệp thay vì gộp chúng - nhưng đó là cách di động nhất để làm điều đó. OP đã không nói anh ấy đang sử dụng loại unix nào và Solaris thấy vẫn không có tính năng -print0.
Kenster

1
+1, OP cho biết unix không phải linux, đây là giải pháp di động tốt nhất.
theotherreceive

Tôi nghĩ giải pháp này là cho phép duy nhất để loại bỏ hàng tấn tệp, nếu tôi không sai khi sử dụng xargs có thể để lại một dòng lệnh lỗi quá dài. +1, đó là lựa chọn của tôi từ nhiều năm qua.
drAlberT

Nếu bạn đang sử dụng tệp tạo tệp để xây dựng dự án của mình, bạn có thể muốn thêm phần này vào mục tiêu "sạch".
Tom Newton

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.