Ich habe ein Verzeichnis mit einer großen Anzahl von Dateien (wie Protokolle für jeden Tag des Jahres). Ich möchte alle Dateien entfernen, die vor 22/11 erstellt wurden. Wie kann ich das erreichen? Muss ich find
dann exec verwenden -rm
? Ich benutze ksh.
26
Antworten:
Verwenden
find
ist weiterhin die bevorzugte Methode zum Löschen von Dateien. Weitere Informationen finden Sie unter http://mywiki.wooledge.org/UsingFind .Eine Möglichkeit besteht darin, eine Datei mit dem Zeitstempel darin zu erstellen. z.B
Löschen Sie nun die Dateien GNU
find
(vorausgesetzt im aktuellen Verzeichnis), die dem Zeitstempel entsprechen, zB:oder nicht GNU finden
quelle
type -f
Aktion nur auf die Dateien beschränkt.Mit GNU oder einigen BSDs
find
:Beachten Sie, dass der letzte Änderungszeitpunkt der Dateien überprüft wird. Auf einigen BSDs, können Sie
-newerBt
anstelle von-newermt
der Datei inode überprüfen Geburt Zeit statt , falls verfügbar.quelle
Beispiel:
In diesem Fall werden alle Dateien, die mit "ORA_XEO" beginnen, mit mehr als 15 Tagen gelöscht.
quelle
rm -rf
würde der erste Befehl alles entfernen in allen Verzeichnissen , die älter sind als die 15 Tage. (Auch, warum die Klammer herum-name
?)example.jar
- es wird entferntexample.cp
- es wird entferntexample.tar
- es wird nicht entferntfind /path/to/directory/ -mtime +<number of days> \( -name '*.jar' -o -name '*.cp' \) -name 'ex*' -exec rm -rf {} \;
find
sollten Sie den-daystart
Modifikator verwenden, um den-mtime
Wert auf Mitternacht zu setzen.