Borrar directorios y ficheros viejos en Linux usando el comando find y rm

Este comando me sirvió de utilidad el otro día para eliminar todos los backups con más de 2 días de antiguedad. Los backups se realizaban a cada hora con una tarea cron que llamaba a un shell script, por lo que este comando sirve para ir borrando todos los ficheros en cada llamada al script y que no se llene el disco de backups..



for i in `find /ruta/al/directorio/que/quieras -maxdepth 1 -type d -mtime +2 -print`
do 
  echo -e "Borrando el directorio $i"; 
   rm -rf $i; 
done


También puede ser ejecutado en una sola línea así:


for i in `find /ruta/al/directorio/que/quieras -maxdepth 1 -type d -mtime +2 -print`; do echo -e "Borrando el directorio $i"; rm -rf $i; done

Si ponemos un mtime de 0, se borrarán todos los ficheros que no se hayan creado hoy, ya que el parámetro mtime de find redondea la fecha. Con un valor de dos, se borrarán todos los ficheros con más de dos días de antiguedad. Ejecutar man find para saber más.. Modificar el script para hacer que bsuque ficheros sería muy sencillo, recomendable mirar más opciones de find, es increíble lo que puede buscar este comando :).
Cuidado con la ruta que se indica en el find, no se vayan a borrar ficheros no deseados.

Compartir:
Abrir chat
¿Tienes alguna duda que podamos aclarar?