viernes, 19 de abril de 2013

Borrar archivos con una antigüedad mayor a....

Cuando trabajamos conectados a servidores unix, hay veces que se desea borrar archivos con una antigüedad superior a X días.
Para Unix tenemos el comando FIND, que nos permite personalizar la búsqueda y con el resultado de esa búsqueda, engancharla para hacer algo con ella.

find /directorio -name "*.txt" -mtime +30 -type f -print -exec rm {} \;

Con -name le estamos diciendo que queremos solo buscar archivos que se llamen, por ejemplo:

*.txt: Archivos con extensión txt.
*carta*: Archivo que contienen carta en su nombre de fichero.

En este ejemplo, buscamos los ficheros que son mas antiguos de 30 dias (-mtime +30). En lugar de 30 se puede poner los días que queramos.
Igual por internet ven en lugar de -mtime y -atime. La diferencia reside en:

atime: Archivos que han sido accedidos hace x días.
mtime: Archivos que han sido modificados hace x días.

Luego vemos el parámetro -type que le indicamos que tipo estamos buscando, como por ejemplo:

d - directorio
f - archivo
l - enlace

Con el parámetro -print le decimos que nos muestre el resultado de la búsqueda.

Con el resultado de la búsqueda podemos redirigirla para hacer algo con ella, en este caso -exec nos permite ejecutar un borrado de: " {} ". Esas llaves son cada linea que devuelve el comando find.

Espero que os sirva de ayuda.

No hay comentarios: