Tìm các tệp cũ hơn x ngày trên một hệ thống với một hộp bận bị tước


9

Tôi cần tìm và xóa các tệp cũ hơn 1 tuần trong đơn vị Phát triển. Có số lượng tiện ích hạn chế có sẵn trên đơn vị này. -mtime findVị ngữ không có sẵn. Làm cách nào để kiểm tra tất cả các tệp cũ hơn x ngày trong trường hợp này?


2
Không rõ ý của bạn với " mtimekhông có sẵn". Nó không phải là một tiện ích mà tôi nhận ra tên.
Kusalananda

/ path / to / my / thư mục $ find -type f -mtime +7 xóa find: không được nhận dạng: -mtime
Ravi

chia sẻ bản phân phối của linux bạn đang sử dụng.
Siva

3
Có vẻ như bận rộn được xây dựng mà không có FEATURE_FIND_MTIME. Được FEATURE_FIND_NEWERkích hoạt? Có find -newerhoạt động không? Là testtiện ích của bạn hoặc tích [hợp shhỗ trợ của bạn -nt?
Stéphane Chazelas

1
Bạn có thể giải quyết vấn đề này nếu bạn có thể sử dụng những touch -d/ date +%s[ file -nt other-file ]
Stéphane Chazelas

Câu trả lời:


11

-mtimelà một vị từ chuẩn của find(trái với -delete) nhưng có vẻ như bạn có phiên bản rút gọn busybox, trong đó FEATURE_FIND_MTIMEtính năng đã bị vô hiệu hóa khi xây dựng.

Nếu bạn có thể xây dựng lại busybox với nó được kích hoạt, bạn sẽ có thể làm:

find . -mtime +6 -type f -exec rm -f {} +

Hoặc nếu FEATURE_FIND_DELETEcũng được bật:

find . -mtime +6 -type f -delete

Nếu không, các tùy chọn khác có thể được sử dụng find -newer(giả sử đã FEATURE_FIND_NEWERđược bật) trên một tệp được đặt để có thời gian sửa đổi cũ một tuần.

touch -d "@$(($(date +%s) - 7 * 86400))" ../ref &&
  find . ! -type f -newer ../ref -exec rm -f {} +

Hoặc nếu -newerkhông có sẵn nhưng sh[sự ủng hộ -nt:

touch -d "@$(($(date +%s) - 7 * 86400))" ../ref &&
  find . ! -type f -exec sh -c '
    for f do
      [ "$f" -nt ../ref ] || printf "%s\0" "$f"
    done' sh {} + |
    xargs -0 rm -f

1
Vâng, busybox là một phiên bản nhẹ hơn ở đây. Sau khi xây dựng lại, find . -mtime +6 -type f -exec rm {} \;làm việc cho tôi
Ravi

2

Từ man find:

-tần n

Tập tin được truy cập lần cuối n * 24 giờ trước. Khi tìm số liệu xem có bao nhiêu khoảng thời gian 24 giờ trước khi tệp được truy cập lần cuối, bất kỳ phần phân số nào cũng bị bỏ qua, do đó, để khớp với +1, một tệp phải được truy cập ít nhất hai ngày trước.

-tần n

Trạng thái của tệp đã được thay đổi lần cuối n * 24 giờ trước. Xem các bình luận cho -atime để hiểu cách làm tròn ảnh hưởng đến việc diễn giải thời gian thay đổi trạng thái tệp.

Tùy thuộc vào trường hợp sử dụng của các tệp bạn muốn xóa, đây là những tùy chọn khác duy nhất của bạn cho find. Tại sao mtimekhông có sẵn? Bạn đang sử dụng hệ thống tập tin nào? Bạn đã khám phá bất kỳ lựa chọn khác?


Đặt thêm câu hỏi của OP nên được thực hiện như làm rõ ý kiến , không phải câu trả lời .
Jeff Schaller
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.