Cara termudah adalah dengan menambahkan -mindepth 1
, yang akan melewati hierarki kedalaman pertama dan mengabaikan direktori induk Anda.
Selain itu, Anda tidak memerlukan -exec
tambahan panggilan ke rm
, Anda cukup delete
folder secara langsung jika kosong.
find /var/www/html/content/processing -mindepth 1 -type d -mtime +1 -delete
Jika tidak kosong:
find /var/www/html/content/processing -mindepth 1 -type d -mtime +1 -exec rm -rf {} \;
Jika Anda malas, Anda juga dapat memperluas wildcard. Sejak *
tidak menyertakan direktori saat ini secara default (kecuali dotglob
diatur), Anda juga dapat melakukan:
find /var/www/html/content/processing/* -type d -mtime +1 -delete
Namun, ini juga tidak termasuk folder tersembunyi, sekali lagi karena dotglob
opsi.
Masalahnya adalah find mengembalikan direktori saat ini (.) bersama dengan direktori lain, sehingga menghapus folder pemrosesan serta subdirektori. Cara cepat untuk menyiasatinya adalah dengan menambahkan opsi
-not -name .
yang menghentikan find dari mengeluarkan direktori saat ini, dan pada gilirannya menghentikannya agar tidak dihapus.
Itu akan berhasil jika Anda menjalankan perintah di dalam direktori pemrosesan, jadi untuk memungkinkan fakta bahwa Anda menggunakan jalur absolut:
-not -name /var/www/html/content/processing
Dan seluruh perintahnya adalah:
find /var/www/html/content/processing -type d -mtime +1 -not -name /var/www/html/content/processing -exec rm -rf {} \;