Estoy tratando de ejecutar el siguiente comando para eliminar carpetas tmp mayores de 3 minutos usando el siguiente:
find /tmp/tmp* -mmin +3 -exec rm -rf {} \;
El comando anterior falla. ¿Por qué?
find /tmp/tmp* -mmin +3 -exec rm -rf {} \;
find: `/tmp/tmpAJaHLX/crashes': No such file or directory
find: `/tmp/tmpbM5ac8/minidumps': No such file or directory
find: `/tmp/tmpbM5ac8/crashes/events': No such file or directory
find: `/tmp/tmpdQACdf/gmp': No such file or directory
find: `/tmp/tmpo1tbqu/thumbnails': No such file or directory
find: `/tmp/tmpW91Yel/extensions': No such file or directory
Lo que está viendo probablemente sea el resultado del comando find
orden transversal.
p.ej. dado un directorio simple
$ find somedir
somedir
somedir/file
luego
$ find somedir -exec rm -rfv {} \;
removed ‘somedir/file’
removed directory: ‘somedir’
find: `somedir': No such file or directory
Puede forzar un recorrido de profundidad primero usando -depth
opción, es decir.
$ find somedir -depth -exec rm -rfv {} \;
removed ‘somedir/file’
removed directory: ‘somedir’
no da como resultado un error.
Alternativamente, puede usar el más simple find somedir -delete
que (como se indica en la página del manual) enciende el -depth
opción
-delete
Delete files; true if removal succeeded. If the removal failed,
an error message is issued. If -delete fails, find's exit sta‐
tus will be nonzero (when it eventually exits). Use of -delete
automatically turns on the -depth option.