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 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
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 cookie và Chính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.