Buscando una forma de eliminar los archivos de cierta antigüedad de un directorio me topé con una “receta” (¿alguien sabe cómo traducir decentemente “tip”?) en la web Command-line Fu.
El problema es que no me funciona (el autor parece haberla colocado incompleta a tenor del \ que aparece al final de la misma) y es por ello que he optado por publicar una alternativa a dicho comando por si a alguno le puede ser de utilidad.
Para borrar todos los ficheros con más de 5 días de antiguedad del directorio /ruta_directorio deberemos ejecutar un
rm -f `find /ruta_directorio -mtime +5`
NOTA: Obsérvese que se hace uso del parámetro -f por lo que el sistema borrará los ficheros que cumplan la condición sin pedir confirmación. Si se quiere confirmar el borrado bastará con quitarlo; el “problema” es que nos preguntará qué hacer PARA CADA fichero.
De esta solución cabe destacar:
- El uso de las comillas ` como un medio de ejecutar un comando dentro de otro.
- El uso del parámetro -mtime del comando find para filtrar por la fecha de modificación. Para mayor información os recomiendo que consultéis los parámetros de find pues cuenta con variantes como atime, ctime y similares que os permiten saber, entre otras cosas, cuándo fue accedido el fichero por última vez.
2 comentarios:
he visto la referencia original, y le falta un punto y coma al final para q funcione, sería:
$ find /dir_name -mtime +5 -exec rm {} \;
a mí sí q me va
muchas gracias por colaborar :D , aveces el copie y pege falla xD
saludos
Publicar un comentario