Como encontrar y borrar archivos con más de X días de Antigüedad

El comando find en Linux, uno de esos comando poco valorados aun cuando es no de los mas poderosos y flexible, tiene un gran cantidad de parámetros que dificultan su uso cuando uno es principiante, pero si lo sabes usar le puedes sacar mucho provecho, además que te permite hacer muchas cosas, entre ellas, encontrar los archivos que tienen mas de X días de antigüedad  y borrarlos en un solo comando y aquí te digo como hacerlo.

Como encontrar y borrar archivos con más de X días de Antigüedad

Encontrar archivos con ciertas condiciones es una tarea que puedes hacer con el comando linux find, este poderoso comando permite encontrar archivos en la ruta indicada en base a muchos parámetros como el tamaño del archivo, el nombre, un patron de caracteres, etc. Uno de esos casos interesante y que puede serte útil es el de encontrar archivos con mas de N días de antigüedad y luego proceder a borrarlos.

PRECAUCIÓN ! : El ejecutar estos comandos puede ser causar perdida de información si no los ejecutas correctamente, ya que estos comandos no muestran alguna advertencia al usuario, en el momento que se presiona la tecla Enter, el comando se ejecuta y procede a borrar los archivos que correspondan a la búsqueda.

El parámetro para buscar un archivo por la fecha de modificación es -mtime y en este parámetro puedes establecer el número de días con el símbolo + inmediatamente seguido por un numero que representa los días de antigüedad.

Así para encontrar los archivos que tienen mas de 7 días de haber sido modificados puedes usar el siguiente comando:

find . -mtime +7 -print

Para este primero paso vamos a describir los 4 parámetros que estamos enviando al comando find:

. (punto) : Este parámetro es la ruda donde vamos a buscar, en este caso será el directorio actual, si queremos hacer la búsqueda en otra ruta la podemos indicar por ejemplo  en /tmp

-mtime : indica que se buscan por la hora de modificación de los archivos

+7 : indica que se busca por archivos con más de N*24 hora de modificación

-print : imprime en pantalla la ruta completa del archivo encontrado

Para dar un ejemplo de este comando buscaremos los archivos que descargamos hace mas de 7 días, para esto buscaremos en la ruta /home/luis/Descargas

find /home/luis/Descargas -mtime +7 -print

Este comando devolverá la lista de archivos que cumplen estas condiciones. El listado de verá como esto:

/home/luis/Descargas/nautilus en ubuntu 16.04 default.jpg
/home/luis/Descargas/openshot 2.1 ubuntu linux mint.jpg
/home/luis/Descargas/ebook_es.pdf
/home/luis/Descargas/openshot 2.1 ubuntu linux mint.png

 

Al tener la lista de archivos que cumple con las condiciones ahora es necesario borrarlos. Para hacer esto podemos usar una de las siguientes opciones:

Con el parámetro -delete

El parámetro -delete indica que se eliminen los archivos que cumplan con los parámetros, solo es necesario agregar este parámetro al final del comando anterior, así:

find /home/luis/Descargas -mtime +7 -delete

Con el parámetro -exec

Este parámetro permite ejecutar un comando en el que incrusta el archivo encontrado en la posición de los caracteres {} y el comando termina con \;. En este caso se utiliza el comando linux rm para eliminar el archivo que se encuentre.

find /home/luis/Descargas -mtime +7 -exec rm -f {} \;

Esto significa que por cada archivo encontrado se ejecutará un comando «rm -f ruta_y_nombre_el_archivo».

Con el comando xargs

Otra forma es enviar la salida del comando find por medio de una tuberia y enciarla al comando xargs que es parecido al parámetro -exec anterior. Para realizar esto se utiliza el siguiente comando:

find /home/luis/Descargas -mtime +7 | xargs rm -f

Si quieres ver mas ejemplos de como utilizar el comando linux find puedes ver los otros tres artículos que tengo en los que te muestro, mediante ejemplos, otras foras de usar este comando.

Te puede Interesar:

Comando find con ejemplos – Parte 1
Comando find con ejemplos – Parte 2
Comando find con ejemplos – Parte 3

Listo con esto puedes borrar o eliminar los archivos viejos de un directorio con una antigüedad de N días, puedes usar este comando periódicamente para eliminar los archivos antiguos que ya no sean necesario y así liberar espacio en disco cuando sea necesario.

¿Qué otras formas se te ocurren para utilizar este comando? como harías para eliminar solo archivos o solo directorios. Sería genial que nos compartas tu opinión en los comentarios.

This entry was posted in Comandos Linux and tagged , . Bookmark the permalink.

3 Responses to "Como encontrar y borrar archivos con más de X días de Antigüedad"

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *


*