Die Kombination von findund lsfunktioniert gut für
- Dateinamen ohne Zeilenumbrüche
- nicht sehr große Anzahl von Dateien
- nicht sehr lange Dateinamen
Die Lösung:
find . -name "my-pattern" -print0 |
xargs -r -0 ls -1 -t |
head -1
Lassen Sie es uns zusammenfassen:
Mit können findwir alle interessanten Dateien wie folgt abgleichen:
find . -name "my-pattern" ...
dann können -print0wir mit allen Dateinamen sicher lswie folgt übergeben:
find . -name "my-pattern" -print0 | xargs -r -0 ls -1 -t
Hier können zusätzliche findSuchparameter und Muster hinzugefügt werden
find . -name "my-pattern" ... -print0 | xargs -r -0 ls -1 -t
ls -tsortiert Dateien nach Änderungszeit (neueste zuerst) und druckt sie einzeln aus. Sie können -cnach Erstellungszeit sortieren. Hinweis : Dies wird mit Dateinamen unterbrochen, die Zeilenumbrüche enthalten.
Endlich bekommen head -1wir die erste Datei in der sortierten Liste.
Hinweis: xargs Verwenden Sie Systembeschränkungen für die Größe der Argumentliste. Wenn diese Größe überschreitet, xargswird lsmehrmals aufgerufen . Dies wird die Sortierung und wahrscheinlich auch die endgültige Ausgabe unterbrechen. Lauf
xargs --show-limits
um die Grenzen Ihres Systems zu überprüfen.
Hinweis 2: Verwenden find . -maxdepth 1 -name "my-pattern" -print0Sie diese Option, wenn Sie keine Dateien in Unterordnern durchsuchen möchten.
Anmerkung 3: Wie von @starfry hervorgehoben, verhindert das -rArgument für xargsden Aufruf von ls -1 -t, wenn keine Dateien von der übereinstimmen find. Vielen Dank für den Vorschlag.