Seperti dikomentari oleh chiborg, pemuatan ini karena memulai rm untuk setiap file yang ditemukan. Saya memperhatikan jawaban di mana tmpwatchdisarankan sebagai alternatif, yang saya yakin berfungsi dengan baik. Namun, itu tidak perlu.
Find dapat menjalankan perintah yang diberikan kepada exec sekali, jika Anda memintanya untuk mengakumulasikan file yang ditemukan ke dalam daftar argumen seperti:
find /path -name "*.moo" -exec rm {} \+
Ini kadang-kadang gagal berfungsi karena daftar argumen mungkin tumbuh lebih besar (dalam byte) daripada maksimum yang diizinkan oleh shell (getconf ARG_MAX). Ini dapat diselesaikan dengan xargs dengan opsi -L.
pertimbangkan contoh ini:
$ echo 0 > /tmp/it;
$ for i in {0..15000};do echo $i;done |\
xargs --no-run-if-empty -L 5000 ./tmp/xr.sh
Iteration=0; running with 5000 arguments
Iteration=1; running with 5000 arguments
Iteration=2; running with 5000 arguments
Iteration=3; running with 1 arguments
$ cat tmp/xr.sh
#!/bin/sh
IT=`cat /tmp/it`
echo Iteration=$IT\; running with $# arguments
let IT=IT+1
echo $IT > /tmp/it
Jadi tidak perlu menginstal perangkat lunak tambahan, yang Anda butuhkan adalah di gnu-findutils:
find /path -mtime +30 -print0 | xargs -0 -L 5000 rm
cache*mengembang ke banyak file, Anda mungkin ingin mencoba sesuatu seperti itufind . -name 'cache*' -mtime +30 -exec rm {} \;.