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ó 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:
Đ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
/ some/dir/phiên bản. :(
Với zshvà (.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
-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.