Die Kombination von find
und ls
funktioniert 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 find
wir alle interessanten Dateien wie folgt abgleichen:
find . -name "my-pattern" ...
dann können -print0
wir mit allen Dateinamen sicher ls
wie folgt übergeben:
find . -name "my-pattern" -print0 | xargs -r -0 ls -1 -t
Hier können zusätzliche find
Suchparameter und Muster hinzugefügt werden
find . -name "my-pattern" ... -print0 | xargs -r -0 ls -1 -t
ls -t
sortiert Dateien nach Änderungszeit (neueste zuerst) und druckt sie einzeln aus. Sie können -c
nach Erstellungszeit sortieren. Hinweis : Dies wird mit Dateinamen unterbrochen, die Zeilenumbrüche enthalten.
Endlich bekommen head -1
wir 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, xargs
wird ls
mehrmals 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" -print0
Sie diese Option, wenn Sie keine Dateien in Unterordnern durchsuchen möchten.
Anmerkung 3: Wie von @starfry hervorgehoben, verhindert das -r
Argument für xargs
den Aufruf von ls -1 -t
, wenn keine Dateien von der übereinstimmen find
. Vielen Dank für den Vorschlag.