find … -exec rm {} \; mengeksekusi rm perintah untuk setiap file. Meskipun memulai proses baru cukup cepat, ini masih jauh lebih lambat daripada sekadar menghapus file.
find … -exec rm {} + akan memanggil rm dalam batch, yang jauh lebih cepat:Anda membayar biaya menjalankan rm sekali per batch, dan setiap batch melakukan banyak penghapusan.
Yang lebih cepat adalah tidak memanggil rm sama sekali. find perintah di Linux memiliki aksi -delete untuk menghapus file yang cocok.
find ./cache -type f -mtime +0.5 -delete
Namun, jika Anda membuat file dengan kecepatan find … -exec rm {} \; tidak dapat mengikuti, mungkin ada yang salah dengan penyiapan Anda. Jika cache berisi jutaan file, Anda harus membaginya menjadi subdirektori untuk akses yang lebih cepat.
Coba gunakan xargs :
find ./cache -mtime +0.5 -print0 | xargs -0 rm -f
Perbarui penjelasan untuk @pradeepchhetri
Jika Anda menggunakan find dengan -exec , setiap file yang find ditemukan akan memanggil rm satu kali. Jadi jika Anda menemukan banyak file, yaitu 10.000 file, Anda memanggil rm 10.000 kali.
xargs akan memperlakukan ouput dari find sebagai argumen perintah ke rm , sehingga xargs akan memberikan argumen sebanyak rm dapat menangani sekaligus, yaitu rm -f file1 file2 ... Jadi itu mengurangi fork call, membuat program berjalan lebih cepat.