Làm thế nào để xóa các tập tin trong linux cũ hơn 1 năm? [bản sao]


9

Có thể trùng lặp:
Làm cách nào để xóa các tệp lớn hơn một ngày nhất định trên linux

Làm cách nào để xóa tất cả các tệp trong thư mục hiện tại và thư mục con cũ hơn một năm?


1
Làm man find. Bùng nổ.

1
Lưu ý đối với người đóng: rằng câu hỏi khác thực sự khác nhau đến mức khó hiểu, câu trả lời của nó không hoàn toàn đơn giản để chuyển đổi.
Gilles 'SO- ngừng trở nên xấu xa'

Câu trả lời:


15
find /the/dir/to/start/in -type f -mtime +365 -ls -exec rm -f -- {} \;

2
find /path/to/files -type f -mtime +365 -deletesẽ dễ dàng hơn
Chris S

-delete không có trong aix của tôi, vì vậy tôi không quen sử dụng nó. Tôi rất vui vì nó được thực hiện trong các nhị phân tìm khác mặc dù.
bot403

find … -exec rm -f {} +sẽ nhanh hơn một chút (và nó di động ngoại trừ các hệ thống cổ đại).
Gilles 'SO- ngừng trở nên xấu xa'

1
Ngoài ra, nên sử dụng --trong trường hợp tên tệp đầu tiên bắt đầu bằng -(mặc dù bạn có thể đảm bảo điều đó sẽ không xảy ra nếu thư mục được chuyển đến findkhông bắt đầu bằng a -).
Gilles 'SO- ngừng trở nên xấu xa'

Điều này cực kỳ nguy hiểm khi bạn không nhìn thấy những gì bạn sắp xóa và tại sao bạn buộc phải xóa bằng -f? Một số tập tin được bảo vệ vì một lý do. An toàn hơn nhiều khi lưu trữ kết quả tìm kiếm vào một tệp, sau đó kiểm tra chúng và chạy rm trên nội dung của tệp.
Petr

2

Nếu bạn đang xóa nhiều tệp, điều này thường nhanh hơn rất nhiều so với "-exec" hoặc đường ống đến "xargs":

find . -type f -mtime +365 | perl -lne unlink
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.