¿Cómo eliminar archivos modificados entre fechas particulares?

12

Como en el tema: me gustaría eliminar archivos en un directorio que se han modificado en un rango de fechas en particular. Cómo puedo hacer esto ?

Patryk
fuente

Respuestas:

18

El comando GNU findes el camino a seguir. Por ejemplo, para eliminar todos los archivos en el directorio actual entre el 1 y el 5 de agosto, puede usar el siguiente comando

find . -maxdepth 1 -type f -newermt 2011-08-01 ! -newermt 2011-08-06 -delete

Es mejor ejecutar el comando sin la -deleteacción, primero, para ver la lista de archivos interesados ​​(un buen sustituto podría ser -lsproducir una lista similar a ls).

Eliminar la -maxdepth 1especificación también atravesará todos los subdirectorios.

También puede especificar horas, por ejemplo

find . -maxdepth 1 -type f -newermt '2011-08-01 10:01:59' \
                         ! -newermt '2011-08-06 23:01:00' -delete

Tenga en cuenta que no elimine las comillas simples, que protegen los espacios entre la fecha y la hora.

El personaje !es una negación, debe leerse: más reciente que esta fecha pero no más nuevo que esta otra fecha.

enzotib
fuente
Gracias por responder. ¿Puedo usar algo para elegir el rango de horas? ¿Y qué es el '!' usado para ?
Patryk
El !es un no. En este ejemplo: no es más reciente que 2011-08-06.
con-f-use
@lordmonkey: mira mi edición en la respuesta
enzotib
3
+1. No sabía -delete predicado. Tal vez no sea necesario, pero agregaré -type f.
Michał Šrajer
@ Michał Šrajer: buenos consejos para -type f, lo olvido. El -deletees una extensión de GNU, creo.
enzotib