Câu trả lời:
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
"{}"
thành {}
trước khi chuyển nó sang find
vị trí đầu tiên; sau đó find
thay thế cho nó. Việc trích dẫn {}
được đề xuất trong trường hợp {
và }
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ể?)
find
xử 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.
find
khô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 đó {}
và "{}"
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 là 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ừ.)
{}
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-delete
chức năng thay vì-exec
.