¿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.
¿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:
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 maxdepth
en el comando de búsqueda.
find /some/dir -type f -mtime +5 -delete
/ some/dir/
versión. :(
Con zsh
y (.m+n)
calificadores glob : .
selecciona solo archivos regulares, m+n
selecciona 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 D
para 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 -rl
con rm
si está satisfecho con el resultado; aunque es posible que tenga que usarlo zargs
si tiene muchos archivos (para evitar una lista de argumentos demasiado larga ):
autoload zargs
zargs ./**/*(.m+9) -- rm
-ls
lugar de-delete
asegurarse de que esto no elimine todo lo que querían mantener. Sí, hablando por experiencia aquí.