Eliminar archivos anteriores a N días en Gnu/Linux

Como ya debes saber, usamos el comando rm en Linux para eliminar archivos y carpetas. Los nombres de archivo que se eliminarán deben pasarse como argumentos a rm. Sin embargo, rm no ofrece otras opciones por sí mismo, como eliminar archivos basados ​​en marcas de tiempo. Situación por la cual da a luz esta entrada.

Esa es la razón por la que hacemos uso del comando find (se usa para buscar archivos y carpetas en función de diferentes parámetros), y algunos de sus opciones para que en conjunto a rm, dar solución al problema anterior.

Hay una opción en find, que nos permite buscar archivos en función de su antigüedad. Este es -atime. La sintaxis de uso, viene así:

$ find [ruta_directorio] -atime +[número_de_días]
$ find . -atime +3

El resultado es variable ya que el programa ignora cualquier parte fraccionaria de la marca de tiempo al calcular la antigüedad de un archivo; por lo tanto, por ejemplo, cuando se deba especificar archivos con más de 4 días a más, especificamos +3. Podemos verificar el resultado con stat [nombre_archivo].

Finalmente, de la union de dos comandos, que se pueden usar para buscar con parámetros como el nombre del archivo, el tamaño, el tipo de archivo, etc., terminamos por eliminar estos. Así que haremos uso de rm, mas el argumento -exec.

$ find . -atime +3 -exec rm {} \; 

Tener cuidado con la ubicación en la que se encuentran, no queremos borrar nada que no deseemos. Un apunte al respecto, find tambien tiene un parametro -delete, que deberia funcionar mejor que -exec rm {} \; porque no tiene que generar un proceso externo para todos y cada uno de los archivos coincidentes. Lo recomiendo porque -delete no existe en todas las versiones de find.


Conclusión

Pues hemos visto cómo eliminar archivos con una antigüedad superior a un número específico de días en Linux. Como sabes, en los sistemas de archivos Linux (y Unix), no se mantiene el tiempo de creación de un archivo. Las tres marcas de tiempo que se mantienen para un archivo son; la hora de su último acceso, la hora de la última modificación y la hora del último cambio de estado. Considere usar el último tiempo de acceso para buscar los archivos, -atime. Para optar por la hora de modificación o cambio de estado, debes use las opciones -mtime o -ctime respectivamente, el resto de la sintaxis permanece igual.

Hasta otro post lector, buenas vibras. Happy Hacking!


Fuente

man find

man rm

2 comentarios

Deja un comentario