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 maxdepth
trong lệnh find.
find /some/dir -type f -mtime +5 -delete
/ some/dir/
phiên bản. :(
Với zsh
và (.m+n)
vòng loại toàn cầu : .
chỉ chọn các tệp thông thường, m+n
chọ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 -rl
bằng rm
nếu bạn hài lòng với kết quả; mặc dù bạn có thể phải sử dụng zargs
nếu bạn có nhiều tệp (để tránh danh sách đối số quá dài ):
autoload zargs
zargs ./**/*(.m+9) -- rm
-ls
thay 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.