2010-09-09 16 views

Respuesta

20

creo que el siguiente debería hacer lo que quiera:

touch -t 201007010000 dummyfile 
find /path/to/files -type f ! -newer dummyfile -delete 

La primera línea crea un archivo que se modificó el 1 de julio de 2010. La última segunda línea encuentra todos los archivos en/ruta/a/archivo que tiene una fecha no más nueva que el archivo dummy, y luego los borra.

Si desea comprobar que funciona correctamente, elimine el argumento -delete y debería enumerar los archivos que se eliminarán.

+0

Después de dejar el '-' frente a 'f ', ahora parece enumerar todos los archivos. Si dejo caer el '!' solo muestra los archivos más nuevos. –

+0

descaradamente he robado/alterado la respuesta de http://forums.devshed.com/unix-help-35/finding-a-file-modified-created-before-a-specific-date-468700.html – bramp

+1

oh sí, lo siento , no debería haber un -f, solo f. – bramp

8

esto debería funcionar:

find /file/path ! -newermt "Jul 01" 

para encontrar los archivos que desea eliminar, por lo que el comando para eliminarlos serían:

find /file/path ! -newermt "Jul 01" -type f -print0 | xargs -0 rm 
+0

Eric, qué versión de find tiene "newerct". No puedo encontrar eso listado en cualquier página de manual. – bramp

+0

@bramp: GNU 'find' tiene esa opción. Sin embargo, Unix/Linux no tiene noción de una fecha de creación, así que usaría '-newermt'. La 'c' es para el cambio de estado del inodo en lugar de" creación ". –

+0

@Dennis: Gracias por su aclaración. –

Cuestiones relacionadas