Cómo borrar todos los ficheros de hace más de x días

Un usuario no ha descargado su correo electrónico en 9 meses, y me pide que le borre todos los mensajes que tengan más de 15 días. Es muy fácil de hacer, y en How-to Geek lo explican a la perfección, así que me limitaré a traducirlo.

La herramienta find de Unix (así como GNU/Linux, etc) permite que se le pasen varios argumentos interesantes, incluyendo uno para ejecutar otra orden sobre cada uno de los ficheros. Usaremos esto para averiguar qué ficheros tienen más de un cierto número de días, y entonces usar la orden rm para borrarlos.

Sintaxis de la orden

find /home/fulano/Maildir/cur -mtime +15 -exec rm {} ;

Obsérvese que hay espacios entre rm, {}, y ;.

Explicación

  • El primer argumento es la ruta a los ficheros. Puede ser una ruta, un directorio o un comodín. Recomiendo usar la ruta completa, y ejecutar la orden sin el exec rm para estar seguros de que se va a conseguir los resultados deseados.
  • El segundo argumento, -mtime, se usa para indicar el número días que tiene el fichero. Si introducimos +15, buscará ficheros que tengan más de 15 días.
  • El tercer argumento, -exec, permite pasar una orden como rm. El {} ; al final es necesario para terminar la orden.

Otra forma de hacerlo sería:
find /home/usuario/Maildir/cur -mtime +15 | xargs rm

Estas órdenes deberían funcionar en cualquier versión de Unix o distribución de GNU/Linux o *BSD.