Linux tìm các tập tin hiển thị lệnh cũ hơn 7 ngày - mà không sử dụng dấu thời gian


0

có quá trình tạo tập tin trong mỗi nửa giờ. Tôi muốn xóa các tập tin cũ hơn 7 ngày.

Nhưng khi tôi chạy lệnh này, nó sẽ xóa tệp cũ hơn bảy ngày so với dấu thời gian hiện tại là chạy ngay lập tức, nhưng tôi không muốn xóa bằng dấu thời gian, tôi chỉ muốn xóa tất cả các tệp được tạo vào hoặc trước ngày hôm đó.

Chỉ huy:

find <file_path> -mtime +6 -name 'sample_file01*.txt' -delete

Nếu tôi chạy lệnh này vào ngày 09-11-2018 lúc 11:30, Nó sẽ xóa các tệp của ngày 02-11-2018 11:00 và trước đó. Tôi chỉ muốn xóa tất cả các tệp của ngày 02-11-2018.

Tôi nên sử dụng lệnh khác nhau hoặc một số sửa đổi cần thiết trong lệnh find ở trên

Cảm ơn, Aditya

Câu trả lời:


0

Trên Ubuntu 18.04, findcó một -daystarttùy chọn cho phép bạn làm những gì bạn muốn:

find <file_path> -daystart -mtime +5 -name 'sample_file01*.txt' -delete

Bạn cần giảm số ngày một cho phạm vi bạn cần.

Nếu bạn không có tùy chọn này (ví dụ: trên OSX), bạn có thể sử dụng -mmin:

secsnow=$(date +%s)
minstoday=$(($secsnow%86400/60))
minsago=$((5*1440+$minstoday))
find <file_path> -mmin +$minsago -name 'sample_file01*.txt' -delete

Tôi đã chỉ ra điều này trong các giai đoạn, để số học rõ ràng, nhưng tất cả có thể được thực hiện với một biểu thức số học duy nhất là tham số:

... -mmin $(($(date +%s)%86400/60+5*1440)) ...

Cảm ơn AFH, sử dụng '-daystart' đã hoạt động. Rất nhiều hữu ích. bạn đã cứu tôi;)
Aditya
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.