Eliminar archivos por edad


16

¿Hay un comando para eliminar todos los archivos en un directorio que no se han modificado en N días? Necesito limpiar algunos registros viejos.

Respuestas:


24

Esto eliminará todos los archivos con más de 5 días de antigüedad, también puede poner un archivo -name '*log'allí para ser más preciso y también puede especificar un maxdepthen el comando de búsqueda.

find /some/dir -type f -mtime +5 -delete


55
Aunque los sabios administradores de sistemas realizan una ejecución en seco en -lslugar de -deleteasegurarse de que esto no elimine todo lo que querían mantener. Sí, hablando por experiencia aquí.
Shadur

2
Hablando por experiencia, también verifican su camino. o no, ya que una vez hice la / some/dir/versión. :(
Hennes

3

Con zshy (.m+n) calificadores glob : .selecciona solo archivos regulares, m+nselecciona archivos modificados hace más de n días;
por ejemplo, enumere los archivos en el directorio actual que se modificaron hace más de 9 días:

print -rl -- *(.m+9)

agregar Dpara incluir archivos de puntos:

print -rl -- *(D.m+9)

o si desea repetir (y enumerar, por ejemplo, solo los archivos que terminan en .log):

setopt extendedglob
print -rl -- **/*.log(.m+9)

reemplace print -rlcon rmsi está satisfecho con el resultado; aunque es posible que tenga que usarlo zargssi tiene muchos archivos (para evitar una lista de argumentos demasiado larga ):

autoload zargs
zargs ./**/*(.m+9) -- rm
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.