Das geht mit einer eingizgen Pipe oder etwas sicherer mit find und stat.
Mit einer einzigen Pipe, die die *.zip-Dateien nach Änderungszeit sortiert und die neueste auswählt geht das so:
ls -t *.zip 2>/dev/null | head -n1
Wie das funktioniert:
ls -t *.zip– listet nur die Dateien auf, die zu*.zipim aktuellen Verzeichnis passen (keine Rekursion) und ordnet sie nach Änderungszeit, neueste zuerst.2>/dev/null– unterdrückt die Fehlermeldung„No such file“, falls keine .zip-Dateien vorhanden sind.head -n1– nimmt nur die erste Zeile, also die Datei mit dem neuesten Änderungsdatum.
Wenn du eine Lösung bevorzugst, die auch funktioniert, wenn Dateinamen Leer- oder Zeilenumbruchszeichen enthalten, kannst du find zusammen mit stat nutzen:
find . -maxdepth 1 -type f -name '*.zip' -printf '%T@ %p\n' |
sort -k1,1nr |
head -n1 |
cut -d' ' -f2-
-maxdepth 1sorgt dafür, dass die Suche nur im aktuellen Verzeichnis stattfindet.%T@druckt den Änderungszeitstempel (Sekunden seit Epoch), so dasssort -nrabsteigend nach diesem Wert sortiert.Der abschließende
cutentfernt den Zeitstempel und lässt nur den Dateinamen übrig.
Beide Befehle geben den Namen der .zip-Datei aus, die zuletzt geändert wurde, im aktuellen Verzeichnis.