2010-09-09 17 views

risposta

20

penso che il seguente dovrebbe fare ciò che si vuole:

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

La prima riga crea un file che è stato modificato il 1 ° luglio 2010. La seconda linea ultima trova tutti i file in/path/to/file di che ha una data non più recente del dummyfile e quindi le elimina.

Se si desidera verificare che funzioni correttamente, rilasciare l'argomento -delete e dovrebbe solo elencare i file che verrebbero eliminati.

+0

Dopo aver lasciato il '-' davanti a 'f ', ora sembra elencare tutti i file. Se rilascio il '!' elenca solo i file più recenti. –

+0

Ho rubato/alterato senza vergogna la risposta da http://forums.devshed.com/unix-help-35/finding-a-file-modified-created-before-a-specific-date-468700.html – bramp

+1

oh sì scusa , non ci dovrebbe essere un -f, solo f. – bramp

8

questo dovrebbe funzionare:

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

per trovare i file che si desidera eliminare, in modo che il comando per eliminare loro sarebbe:

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

Eric, quale versione di find ha "newerct". Non riesco a trovarlo elencato in nessuna pagina man. – bramp

+0

@bramp: GNU 'find' ha questa opzione. Comunque, Unix/Linux non ha la nozione di una data di creazione, quindi userei '-newermt'. Il 'c' è per il cambio di stato dell'inode anziché della" creazione ". –

+0

@Dennis: Grazie per il vostro chiarimento. –

Problemi correlati