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.
tip = consejo práctico, consejillo (entre otras cosas)
Me gustaMe gusta
Hola,
al comando de commandlinefu le faltaba el ; que se «escapa» con el \
find /dir_name -mtime +5 -exec rm {} \;
Acabo de descubrir tu blog y me encanta, hasta me he repasado las entradas antiguas 🙂
Un saludo y gracias por compartir la información con todos.
Me gustaMe gusta
Gracias por comentar la corrección @esmar y bienvenid@ a la que puedes considerar tu casa 😉
Me gustaMe gusta
El consejo esta genial, solo que a mi me interesa este mismo procedimiento pero para windows.
¿ Alguna opción ?
Un saludo…
Me gustaMe gusta
Para Windows, por no utilizar dicho sistema operativo desde la versión XP, se me ocurre hacer una búsqueda de archivos por fecha y, una vez seleccionados todos los que te aparecen, pulsar la teclar Supr.
TIP: la combinación Win+F solía abrir el menú buscar.
Siento no ser de más ayuda. Suerte y un saludo
Me gustaMe gusta
Aparte, el comando find admite el -delete, y así te ahorras el tener que estar con el -exec rm y esas cosas, eso implica que no forkearas una shell por fichero, lo cual interesa cuando tienes que mandar a borrar un fleje de ficheros.
Me gustaMe gusta
Buen apunte muchísimas gracias @Noname.
Me gustaMe gusta
Podés usar $(…) en lugar de `…` porque a veces es confuso encontrar este tipo de comillas en el teclado por lo que la línea te quedaría como
rm -f $(find /ruta_directorio -mtime +5)
Saludos
Me gustaMe gusta
Toda la razón del mundo Gustavo; según me va dando uso una u otra combinación.
Gracias por la sugerencia
Me gustaMe gusta