Como comentó chiborg, la carga se debe al inicio de rm para cada archivo encontrado. Noté la respuesta donde tmpwatch
se sugiere como alternativa, que estoy seguro funciona bien. Sin embargo, no es necesario.
Find puede ejecutar el comando dado a exec una vez, si le dice que acumule los archivos encontrados en una lista de argumentos así:
find /path -name "*.moo" -exec rm {} \+
Esto a veces puede fallar porque la lista de argumentos puede crecer (en bytes) más que el máximo permitido por el shell (getconf ARG_MAX). Esto puede resolverse mediante xargs con la opción -L.
considera este ejemplo:
$ 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
Por lo tanto, no es necesario instalar software adicional, todo lo que necesita está en gnu-findutils:
find /path -mtime +30 -print0 | xargs -0 -L 5000 rm
cache*
expande a muchos archivos, puede probar algo como en sufind . -name 'cache*' -mtime +30 -exec rm {} \;
lugar.