Angelehnt an meinen Eintrag Alte Dateien löschen (Praxisanwendung) gibt es noch eine andere Möglichkeit Dateien/Verzeichnisse ab einer bestimmten Anzahl zu löschen – unabhängig vom Datum/Alter der Dateien.
In dem erwähnten Beitrag habe ich nach Dateien gesucht, welche älter als 14 Tage sind und diese dann gelöscht.
Bei einem Backup(-Ordner) oder Datenbank-Dumps kann es sein, dass man mehrfach am Tag Backups/Dumps macht. Möchte man aber eine gleichbleibende Anzahl von Backups vorhalten, so kann ein Abgleich an Hand des Datums nicht durchgeführt werden.
Ich verwende dafür jetzt nicht den „find“-Befehl, sondern einfach „ls“
1 2 |
ls -t #sortiert die neuesten Dateien/Verzeichnisse zu erst. ls -tr #sortiert die ältesten Dateien/Verzeichnisse zu erst. |
Möchte man die Anzeige begrenzen – z.B.: auf die neuesten/ältesten 3 Dateien/Verzeichnisse – kann man den „tail“- oder den „head“-Befehl verwenden.
1 2 3 4 |
ls -t | tail -n3 #zeigt die ältesten 3 Dateien an ls -tr | tail -n3 #zeigt die neusten 3 Dateien an ls -t | head -n3 #zeigt die neuesten 3 Dateien an ls -tr | head -n3 #zeigt die ältesten 3 Dateien an |
Ein Stolperstein kann die Verwendung von „ls -lt“ sein, da durch den Parameter -l eine Liste ausgegeben wird, welche eine weitere Zeile (die Zusammenfassung) ausgibt.
Für den Befehl „tail“ und „head“ ist diese Zusammenfassung ebenfalls eine Zeile der Ausgabe.
Eine weitere Variation ist mit den „tail“- und „head“-Befehl möglich:
1 2 |
ls -t | tail -n +4 #zeigt die ältesten Dateien an, ausser den 3(!) neuesten ls -tr | tail -n +3 #zeigt die neusten Dateien an ausser den 2(!) ältesten |
Beispiel:
Es sollen alle Dateien/Verzeichnisse, ausser den 4 neuesten, gelöscht werden;
Am Beispiel mit „-1“-Parameter.
1 |
ls -1t |tail -n +5|xargs rm -rf |
Möchte man Dateien in einem Unterverzeichnis löschen, so muss man noch den Pfad mit übergeben.
Dies kann mit dem „ls“-Parameter ‚-d‘ gemacht werden.
1 |
ls -td /pfad/* |tail -n +5|xargs rm -rf |
Wichtig ist hier die Angabe von „/Pfad/*“ (das Sternchen am Ende nicht vergessen).
Wow, vielen Dank für diesen wertvollen Tipp! 😉 Sowas habe ich schon länger gesucht.
Ich lasse jetzt meine Verzeichnisse per Cornjob bereinigen.
TOP!
Viele Grüße, A.H. (Linux User)