Purgando ficheros de log, me he encontrado con un servidor linux con un directorio en el que se habían generado muchisimos ficheros entre varios meses, como ya tenia backup de ellos he decidido eliminar aquellos fichero comprendidos entre esos meses, os voy a explicar como lo he realizado a través de la consola de linux.
Lo primero de todo queria saber cuanto ocupaban dichos ficheros, por lo que me he usado el comando du con la opción --time que muestra la última fecha de modificación.
du -sh --time *
El problema que tenemos con el comando lanzado anteriormente, es que nos muestra todos los ficheros que tenemos, la forma de realizar el filtrado entre fechas es usando con el comando awk.
du -sh --time * | awk '$2 >= "2010-01" & $2 <= "2010-08"'
Como podeis observar en awk usamos $2, este numero corresponde a la columna en la que se muestra la fecha al lanzar el comando du -sh --time *
Una vez listado todo los ficheros, voy a proceder a borrarlos, podemos seguir usando los mismos comandos con la combinación de xargs que se enargará de pasar la lista de ficheros filtrados a la entrada estandar del comando rm
du -sh --time * | awk '$2 >= "2014-10" & $2 <= "2014-11"' | xargs rm -rf
Como siempre digo, en programación y sobre todo en bash, existen muchas formas de hacer las cosas, ¿Cual es la correcta? pues dependerá de cada uno, por lo que si teneis otro metodo para realizar esto, podeis comentadlo con nosotros.