Nur die drei neuesten Dateien behalten

CLI-Befehl, um nur die drei neuesten Dateien zu behalten

1
ls -t | sed -e '1,3d' | xargs -d '\n' -r rm

Was passiert hier?

ls -t listet alle Dateien im aktuellen Verzeichnis in absteigender Reihenfolge der Änderungszeit auf. Die zuletzt geänderten Dateien stehen zuerst, ein Dateiname pro Zeile.

sed -e '1,3d' löscht die ersten 3 Zeilen, also die 3 neuesten Dateien.

xargs -d '\n' -r rm liest die restlichen Zeilen, nimmt dabei \n als einziges Trennzeichen (so überstehen Dateinamen mit Leerzeichen) und hängt sie als Argumente an einen – bei sehr vielen Dateien auch mehrere – rm-Aufrufe an. -r verhindert, dass rm ohne Argumente läuft, falls es 3 oder weniger Dateien gibt.

xargs -d ist eine GNU-Erweiterung. Unter macOS/BSD stattdessen ls -t | tail -n +4 | tr '\n' '\0' | xargs -0 rm verwenden.

Quelle

Erstellt mit Hugo
Theme Stack gestaltet von Jimmy