Xóa các tệp cũ hơn một năm trên Linux


18

Vào thời điểm đó, nhiều tệp vẫn còn trên hệ thống của tôi và tôi không cần chúng nữa, vậy làm thế nào để xóa tất cả các tệp ít nhất một năm tuổi?

Câu trả lời:


34

Bạn có thể làm điều đó với lệnh này

find /path/to/files* -mtime +365 -exec rm {} \;

Một số giải thích

/path/to/files* là đường dẫn đến các tập tin.

-mtimeđược sử dụng để chỉ định số ngày cũ của tệp. +365 sẽ tìm thấy các tệp cũ hơn 365 ngày trong một năm

-exec cho phép bạn vượt qua trong một lệnh như rm.


Chỉnh sửa Nhờ ghi chú @Oli -> bạn có thể thực hiện bằng cách:

find /path/to/files* -mtime +365 -delete

7
Bạn nên luôn luôn trích dẫn {}trong -exec(để nó đọc -exec rm "{}" \;). Điều này đảm bảo rằng các không gian được xử lý đúng cách ... Và bạn chỉ có thể sử dụng -deletechức năng thay vì -exec.
Oli

1
@Oli Huh ??? (Những gì bạn đã nói không thể đúng, xem xét rằng vỏ biến "{}"thành {}trước khi chuyển nó sang findvị trí đầu tiên; sau đó findthay thế cho nó. Việc trích dẫn {}được đề xuất trong trường hợp {}bản thân đôi khi có thể được đối xử đặc biệt bởi vỏ - không có gì để làm với các khoảng trắng. Và thường {}không phải trích dẫn. Tôi không thể nghĩ đến bất kỳ tình huống nào, ít nhất là khi gọi tìm thấy từ vỏ kiểu Bourne, khi {}, không có gì bên trong, xuất hiện như một đối số, sẽ phải được trích dẫn. Bạn có thể?)
Eliah Kagan

1
@EliahKagan Vâng, hóa ra findxử lý thoát cho chính nó nhưng đó không phải là một thói quen xấu trong khi viết kịch bản. Nó không đau.
Oli

2
@Oli Nhưng nó không giúp được gì, kể cả về nguyên tắc. Nếu findkhông xử lý thoát, "{}"vẫn sẽ có tác dụng tương tự như {}- điều đó cũng không hiệu quả , thay vì cả hai đều hoạt động. Điều đó {}"{}"hành xử giống nhau không - và không thể - do bất kỳ tính năng đặc biệt nào của tìm kiếm. Nhầm lẫn những gì được mở rộng bởi trình bao với những gì được mở rộng bởi một số chương trình khác một thói quen xấu. Tất cả chúng ta thỉnh thoảng mắc lỗi đó, nhưng đó vẫn là một lỗi - không phải là cách thực hành tốt nhất. (Người ta vẫn có thể trích dẫn {}để giúp con người thấy đó không phải là mô hình mở rộng niềng răng, nhưng điều đó không liên quan đến việc chia tách từ.)
Eliah Kagan
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.