Tìm và xóa tất cả các tệp mà không có phần mở rộng với một thư mục và các thư mục con của nó


16

Tôi có một thư mục không có khoảng 500 thư mục con. Có rất nhiều rác được tìm thấy trong đó và tôi muốn dọn sạch nó.

Tôi đã xóa một số kiểu tệp mà tôi không muốn, như hình ảnh, bằng lệnh này:

find . -mindepth 1 -iname "*.jpg" -type f -delete

Tuy nhiên, bây giờ tôi muốn xóa tất cả các tệp không có phần mở rộng. Các tệp như "Danh sách mua sắm" trong phần "Danh sách mua sắm"

Tôi đã thử lệnh sau nhưng nó không hoạt động:

find . -mindepth 1 ! -iname "*.*" -type f -delete

Câu trả lời:


20

Thử đi:

find . -type f  ! -name "*.*"  -delete

Tuy nhiên, lưu ý rằng ở trên sẽ không xóa các tệp có tên kết thúc bằng một ., ví dụ foo.. Để xóa chúng, hãy sử dụng cái này thay thế:

find . -type f  ! -name "*.?*" -delete

Lệnh thứ hai là câu hỏi tiếp theo của tôi. Cám ơn rất nhiều! Tôi cũng có thể nhập find . -type f ! -name "*?.*" -deleteđể xóa các tệp như ".trash" hoặc bất cứ thứ gì tôi không cần. Đừng lo lắng - đó không phải là thư mục Home của tôi, vì vậy tôi đã không mất bất kỳ tập tin cấu hình nào.
etsnyman

5
@etsnyman Tốt hơn để kiểm tra lệnh đầu tiên mà không có -deletetùy chọn!
Radu Rădeanu

@etsnyman không hoàn toàn, để xóa các tệp bắt đầu bằng dấu chấm, hãy sử dụng find . -type f -name ".*" -deletetệp trong nhận xét cuối cùng của bạn cũng sẽ xóa các tệp không có phần mở rộng. Và những gì Radu nói! Kiểm tra trước!
terdon

@ RaduRădeanu Tôi thực sự đã thử nghiệm nó đầu tiên trên một thư mục giả với các tệp trống ...
etsnyman

@terdon Dấu hỏi có nghĩa gì trong lệnh thứ hai của bạn?
Avinash Raj

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.