Bagaimana saya bisa menghapus semua file dalam folder yang belum diakses dalam jumlah waktu tertentu?

14

Saya ingin menjalankan tugas cron malam yang menghapus semua file dalam folder yang belum diakses dalam seminggu atau lebih. Apa cara paling efisien untuk melakukan ini di bash?

bloudermilk
sumber
2
finddapat memfilter berdasarkan atime. "Kebenaran" dari atime tergantung pada konfigurasi (lihat noatime), paling tidak.

Jawaban:

20

Anda menginginkan findalat itu .

find folder -depth -type f -atime +7 -delete

(Ini akan menghapus semua file ( hanya yang biasa , tidak ada pipa, perangkat khusus, direktori, link simbolik) di folder tertentu dan semua subdirektori (rekursif) di mana yang terakhir waktu akses adalah lebih lama dari 7 hari yang lalu.)

Paŭlo Ebermann
sumber
6
Anda mungkin ingin menambahkan -type fdi sana untuk memastikan hanya menghapus file, bukan seluruh direktori.
Shadur
3

Anda mungkin ingin memeriksa tmpwatchyang dapat dimasukkan ke dalam pekerjaan cron. Tidak perlu menggulung sendiri find. Di RHEL ada di tmpwatchRPM.

Aaron D. Marasco
sumber
Ini jelas merupakan solusi yang lebih elegan, tetapi saya lebih suka portabilitas find.
bloudermilk