Xóa các tập tin theo độ tuổi


15

Có lệnh xóa tất cả các tệp trong thư mục chưa được sửa đổi trong N ngày không? Tôi cần phải dọn sạch một số nhật ký cũ.

Câu trả lời:


23

Điều này sẽ xóa tất cả các tệp cũ hơn 5 ngày, bạn cũng có thể đặt một tệp -name '*log'trong đó để chính xác hơn và bạn cũng có thể muốn chỉ định một maxdepthtrong lệnh find.

find /some/dir -type f -mtime +5 -delete


4
Mặc dù các hệ thống thông minh thực hiện một cách khô khan -lsthay vì -deleteđể đảm bảo điều này sẽ không xóa bất cứ thứ gì họ muốn giữ. Vâng, nói từ kinh nghiệm ở đây.
Shadur

2
Nói từ kinh nghiệm, họ cũng kiểm tra con đường của họ. hoặc không, vì tôi đã từng làm / some/dir/phiên bản. :(
Hennes

3

Với zsh(.m+n) vòng loại toàn cầu : .chỉ chọn các tệp thông thường, m+nchọn các tệp được sửa đổi hơn n ngày trước;
ví dụ: liệt kê các tệp trong thư mục hiện tại đã được sửa đổi hơn 9 ngày trước:

print -rl -- *(.m+9)

thêm Dđể bao gồm các tập tin dấu chấm:

print -rl -- *(D.m+9)

hoặc nếu bạn muốn lặp lại (và liệt kê ví dụ: chỉ các tệp kết thúc bằng .log):

setopt extendedglob
print -rl -- **/*.log(.m+9)

thay thế print -rlbằng rmnếu bạn hài lòng với kết quả; mặc dù bạn có thể phải sử dụng zargsnếu bạn có nhiều tệp (để tránh danh sách đối số quá dài ):

autoload zargs
zargs ./**/*(.m+9) -- rm
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.