Como ya sabrá, 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.
Esa es la razón, usamos el comando find en Linux, que se usa para buscar archivos y carpetas en función de diferentes parámetros.
Es un comando complejo que se puede usar para buscar con parámetros como el nombre del archivo, el tamaño, el tipo de archivo, etc.
Hay una opción en el comando de búsqueda para buscar archivos en función de su antigüedad y ahora les explicaré como cómo usar find y rm juntos para eliminar archivos con una antigüedad superior a la cantidad de días especificada.
Buscar archivos de más de N días
Usamos el argumento ‘-atime’ del comando find para buscar archivos con más de N días, es decir, accedidos por última vez antes de al menos N días.
$ find <ruta_del_directorio> -atime +<N>
$ find . -atime +3
Hay dos archivos en la corriente a los que se accedió por última vez hace al menos 4 días. Usemos el comando «stat» para verificar esto:
$ stat fichero1
Por ejemplo, cuando se quiere especificar archivos con más de 4 días o más, especificamos +3.
Eliminar archivos de más de N días
Finalmente, llamemos al comando rm con el argumento ‘-exec’ para eliminar estos archivos.
$ find . -atime +3 -exec rm {} \;
Conclusión
En este artículo, hemos visto cómo eliminar archivos con una antigüedad superior a un número específico de días en Linux.
Como sabrá, 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.
Aquí hemos considerado el último tiempo de acceso para buscar los archivos. Los usuarios también pueden optar por la hora de modificación o cambio de estado: simplemente use las opciones ‘-mtime’ o ‘-ctime’ respectivamente, en lugar de ‘-atime’, y el resto de la sintaxis permanece igual.