Apakah ada perintah untuk menghapus semua file dalam direktori yang belum dimodifikasi dalam N hari? Saya perlu membersihkan beberapa log lama.
Apakah ada perintah untuk menghapus semua file dalam direktori yang belum dimodifikasi dalam N hari? Saya perlu membersihkan beberapa log lama.
Jawaban:
Ini akan menghapus semua file yang lebih lama dari 5 hari, Anda dapat meletakkannya -name '*log'di sana juga untuk menjadi lebih tepat dan Anda mungkin ingin menentukan maxdepthdalam perintah find juga.
find /some/dir -type f -mtime +5 -delete
/ some/dir/versi. :(
Dengan zshdan (.m+n) kualifikasi global : .hanya memilih file biasa, m+nmemilih file yang dimodifikasi lebih dari n hari yang lalu;
mis. daftar file dalam direktori saat ini yang telah dimodifikasi lebih dari 9 hari yang lalu:
print -rl -- *(.m+9)
tambahkan Duntuk memasukkan file dot:
print -rl -- *(D.m+9)
atau jika Anda ingin berulang (dan daftar misalnya hanya file yang diakhiri dengan .log):
setopt extendedglob
print -rl -- **/*.log(.m+9)
ganti print -rldengan rmjika Anda senang dengan hasilnya; meskipun Anda mungkin harus menggunakan zargsjika Anda memiliki banyak file (untuk menghindari daftar argumen terlalu lama ):
autoload zargs
zargs ./**/*(.m+9) -- rm
-lsalih - alih-deletememastikan ini tidak akan menghapus apa pun yang mereka inginkan disimpan. Ya, berbicara dari pengalaman di sini.