tìm và xóa các tệp lớn hơn kích thước và loại cụ thể


9

Tôi muốn dọn sạch máy chủ của mình khỏi các tệp nhật ký lớn và bản sao lưu.

Tôi nghĩ ra cái này:

find ./ -size +1M | xargs rm

Nhưng tôi không muốn bao gồm mp3 và mp4. Tôi chỉ muốn làm điều này cho các tệp nhật ký và lưu trữ (zip, tar, v.v.)

Lệnh sẽ như thế nào?


2
thử find / -type f \( -name "*zip" -o -name "*tar" -o -name "*gz" \) -delete.. thêm bất kỳ tiện ích mở rộng nào bạn muốn xóa
Sundeep

1
và tốt hơn để làm khô chạy lệnh mà không có -deletephần để kiểm tra độ tỉnh táo
Sundeep

2
@Saeid Yazdani. ..... Xóa tất cả + 1M trong / sẽ "xóa" hệ điều hành của bạn: libc.so.**khoảng 1,8 MB! -
Knud Larsen

@KnudLarsen bạn nói đúng Tôi có ý định ở trong thư mục nhà của tôi và cho "tìm ./" ... Tôi đã chỉnh sửa câu hỏi
Saeid Yazdani

@spasic cảm ơn, đó là những gì tôi cần ... bạn muốn đăng làm câu trả lời?
Saeid Yazdani

Câu trả lời:


14
find -type f \( -name "*zip" -o -name "*tar" -o -name "*gz" \) -size +1M -delete
  • các \( \)cấu trúc cho phép nhóm khác nhau mẫu tên tập tin
  • bằng cách sử dụng -deletetùy chọn, chúng ta có thể tránh đường ống và rắc rối với xargsXem cái này , cái nàycái này
  • ./hoặc .là tùy chọn khi sử dụng findlệnh cho thư mục hiện tại


Chỉnh sửa: Như Eric Renouf lưu ý, nếu phiên bản findkhông hỗ trợ -deletetùy chọn của bạn, hãy sử dụng -exectùy chọn

find -type f \( -name "*zip" -o -name "*tar" -o -name "*gz" \) -size +1M -exec rm {} +

trong đó tất cả các tệp được lọc bởi findlệnh được truyền cho rmlệnh


2
Điều đáng chú ý là không phải tất cả các phiên bản findhỗ trợ -delete, mặc dù bạn vẫn có thể tránh xargsvới-exec rm {} +
Eric Renouf

7

Nếu bạn muốn loại trừ các tệp theo tên, bạn có thể sử dụng cú pháp này:

find . -type f ! -name '*.mp3' ! -name '*.mp4' -size +1M -delete

hoặc nếu bạn findkhông hỗ trợ delete:

find . -type f ! -name '*.mp3' ! -name '*.mp4' -size +1M -exec rm {} \;

Điều đáng chú ý (ở đây cũng vậy) rằng không phải tất cả các phiên bản findhỗ trợ-delete
Eric Renouf

Bằng cách nào không? Tôi đã kiểm tra vanilla OSX và gfind...
techraf

2
Chà, tôi không có AIX để tự kiểm tra trực tiếp, nhưng nó không được ghi lại trong các tùy chọn cho phiên bản đó: ibm.com/support/ledgeledgecenter/ssw_aix_72/com.ibm.aix.cmds2/ Khăn
Eric Renouf

1

Dựa trên các câu trả lời ở trên, tôi đã sử dụng lệnh bên dưới để xóa máy chủ khỏi các tệp nhật ký lớn (sau khi cd'ing vào / var / lib / jenkins)

find -type f -name *log -size +500M -delete
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.