2010-09-09 5 views

Antwort

20

denke ich, sollte folgendes tun, was Sie wollen:

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

Die erste Zeile erstellt eine Datei, die geändert am 1. wurde zuletzt aktualisiert Juli 2010. Die zweite Zeile alle Dateien in/Pfad findet/to/file die ein Datum hat, das nicht neuer als die Dummydatei ist, und sie dann löscht.

Wenn Sie überprüfen möchten, dass es richtig funktioniert, dann lassen Sie das -delete Argument fallen und es sollte nur die Dateien auflisten, die gelöscht werden würden.

+0

Nach dem Fallenlassen der '-' vor‚f Jetzt scheint es alle Dateien aufzulisten. Wenn ich das '!' Es listet nur die neueren Dateien auf. –

+0

Ich schamlos/änderte die Antwort von http://forums.devshed.com/unix-help-35/finding-a-file-modified-created-before-a-specific-date-468700.html – bramp

+1

oh ja Entschuldigung , es sollte kein -f geben, nur f. – bramp

8

Dies sollte funktionieren:

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

die Dateien, die Sie löschen möchten, um, so dass der Befehl löschen würde:

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

Eric, welche Version von find hat "neuere". Ich kann das auf keiner Man-Seite finden. – bramp

+0

@ bramp: GNU 'find' hat diese Option. Allerdings hat Unix/Linux keine Vorstellung von einem Erstellungsdatum, also würde ich '-newermt' verwenden. Das 'c' ist für den Statuswechsel des Inode und nicht für" creation ". –

+0

@Dennis: Vielen Dank für Ihre Klarstellung. –

Verwandte Themen