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 maxdepth
dalam perintah find juga.
find /some/dir -type f -mtime +5 -delete
/ some/dir/
versi. :(
Dengan zsh
dan (.m+n)
kualifikasi global : .
hanya memilih file biasa, m+n
memilih 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 D
untuk 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 -rl
dengan rm
jika Anda senang dengan hasilnya; meskipun Anda mungkin harus menggunakan zargs
jika Anda memiliki banyak file (untuk menghindari daftar argumen terlalu lama ):
autoload zargs
zargs ./**/*(.m+9) -- rm
-ls
alih - alih-delete
memastikan ini tidak akan menghapus apa pun yang mereka inginkan disimpan. Ya, berbicara dari pengalaman di sini.