Menemukan file yang lebih lama dari x hari pada sistem dengan kotak sibuk yang dipreteli


9

Saya perlu mencari dan menghapus file yang lebih lama dari 1 minggu di unit Pengembangan. Ada sejumlah utilitas terbatas yang tersedia pada unit ini. -mtime findPredikat tidak tersedia. Bagaimana saya memeriksa semua file yang lebih lama dari x hari dalam kasus ini?


2
Tidak jelas apa yang Anda maksud dengan " mtimetidak tersedia". Itu bukan utilitas yang namanya saya kenali.
Kusalananda

/ path / to / my / folder $ find -type f -mtime +7 delete find: tidak dikenali: -mtime
Ravi

bagikan distro linux yang Anda gunakan.
Siva

3
Sepertinya itu sibuk tanpa kotak yang dibangun FEATURE_FIND_MTIME. Apakah FEATURE_FIND_NEWERdiaktifkan? Apakah find -newerbekerja? Apakah testutilitas Anda atau dasar dukungan [Anda ? sh-nt
Stéphane Chazelas

1
Anda dapat mengatasi ini jika Anda dapat menggunakan mereka touch -d/ date +%sdan[ file -nt other-file ]
Stéphane Chazelas

Jawaban:


11

-mtimeadalah predikat standar find(berlawanan dengan -delete) tetapi sepertinya Anda memiliki versi stripped down busybox, di mana FEATURE_FIND_MTIMEfitur tersebut telah dinonaktifkan pada waktu pembuatan.

Jika Anda dapat membangun kembali busybox dengan mengaktifkannya, Anda seharusnya dapat melakukan:

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

Atau jika FEATURE_FIND_DELETEjuga diaktifkan:

find . -mtime +6 -type f -delete

Jika tidak, opsi lain dapat digunakan find -newer(dengan asumsi FEATURE_FIND_NEWERdiaktifkan) pada file yang diatur untuk memiliki waktu modifikasi satu minggu.

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

Atau jika -newertidak tersedia tetapi sh's [dukungan -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
Ya, busybox adalah versi yang lebih ringan di sini. Setelah membangun kembali, find . -mtime +6 -type f -exec rm {} \;bekerja untuk saya
Ravi

2

Dari man find:

-atime n

File terakhir diakses n * 24 jam yang lalu. Ketika menemukan angka berapa periode 24 jam yang lalu file terakhir diakses, setiap bagian fraksional diabaikan, sehingga untuk mencocokkan -atime +1, file harus diakses setidaknya dua hari yang lalu.

- waktu n

Status file terakhir diubah n * 24 jam yang lalu. Lihat komentar untuk -atime untuk memahami bagaimana pembulatan mempengaruhi interpretasi waktu perubahan status file.

Bergantung pada kasus penggunaan file yang ingin Anda hapus, ini adalah satu-satunya pilihan lain untuk Anda find. Kenapa mtimetidak tersedia? Sistem file apa yang Anda gunakan? Apakah Anda menjelajahi opsi lain?


Mengajukan lebih banyak pertanyaan OP harus dilakukan sebagai klarifikasi komentar , bukan jawaban .
Jeff Schaller
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.