Tengo un directorio de archivos de registro que tiene 82000 archivos y directorios (aproximadamente la mitad y la mitad).
Necesito eliminar todos los archivos y directorios que tengan más de 3 días.
En un directorio que tiene 37000 archivos, pude hacer esto con:
find * -mtime +3 -exec rm {} \;
Pero con 82000 archivos / directorios, aparece el error:
/ usr / bin / find: lista de argumentos demasiado larga
¿Cómo puedo evitar este error para poder eliminar todos los archivos / directorios que tienen más de 3 días?
linux
file-io
resource-cleanup
Edward Tanguay
fuente
fuente
find -mtime +3 -exec rm {} +
?find * -mtime +3 |xargs rm
solucionaría ese problema.find *
.find .
es mejor. El shell globing con expande*
a una enorme lista de archivos y directorios.Respuestas:
Para eliminar todos los archivos y directorios dentro del directorio actual :
O alternativamente, más en línea con el comando original del OP:
fuente
--
después de rm, comofind . -mtime +3 -exec rm -- {} \;
--
sirve.También puede utilizar:
Para no eliminar el directorio de destino
fuente
Otra solución para la pregunta original, esp. útil si desea eliminar solo ALGUNOS de los archivos más antiguos en una carpeta, sería algo como esto:
y así sucesivamente ... Las comillas bloquean los comodines de shell, lo que le permite "encontrar" millones de archivos :)
fuente