it-swarm.com.de

Entfernen Sie alle Dateien, die vor einem bestimmten Datum erstellt wurden

Ich habe ein Verzeichnis mit einer hohen Anzahl von Dateien (wie Protokolle für jeden Tag des Jahres). Ich möchte alle Dateien entfernen, die vor dem 22.11. Erstellt wurden. Wie kann ich das erreichen? Muss ich find verwenden, dann exec -rm? Ich benutze ksh.

29
user1058398

Die Verwendung von find ist weiterhin die bevorzugte Methode zum Löschen von Dateien. Weitere Informationen finden Sie unter http://mywiki.wooledge.org/UsingFind .

Eine Möglichkeit, dies zu tun, besteht darin, eine Datei mit dem darin enthaltenen Zeitstempel zu erstellen. z.B

touch -t 201311220000 /tmp/timestamp

Löschen Sie nun die Dateien GNU find (vorausgesetzt im aktuellen Verzeichnis), die dem Zeitstempel entsprechen, z.

find . -type f ! -newer /tmp/timestamp -delete  

oder nicht GNU find

find . -type f ! -newer /tmp/timestamp -exec rm {} \;
35

Mit GNU oder einem BSD finds:

find . ! -newermt 2013-11-22 ! -type d -delete

Beachten Sie, dass die letzte Änderungszeit der Dateien überprüft wird. Bei einigen BSDs können Sie anstelle von -newerBt-newermt Verwenden, um den Inode der Datei zu überprüfen Geburt Zeit, falls verfügbar.

27
find /path/to/directory/ -mtime +<number of days> -name '<file name>' -exec rm -rf {} \;

beispiel:

find /Netap_fileshare_backup/SQL/DB_backups/xeo/ -mtime +15 -name 'ORA_XEO*' -exec rm -rf {} \;

In diesem Fall werden alle Dateien, die mit "ORA_XEO" beginnen, mit mehr als 15 Tagen entfernt.

1
calafate