Ich weiß also, dass das Parsen von ls schlecht ist!.
Heute habe ich dieses Nugget gefunden:
FILENAME=`ls -t $READ_FOLDER | head -1`
Ich glaube also, dass dies ursprünglich entworfen wurde, um den neuesten Dateinamen zu holen, ich möchte es jetzt eigentlich anpassen, um vielleicht den 5. zu schnappen neueste Datei, da der Prozess, der sie überprüft, etwas langsam ist, und wir können daher nicht sicher sein, ob sie bereits verarbeitet wurden.
Ich arbeite in bash, bin aber auch nicht gegen eine generische sh-Lösung.
Akzeptierte Antwort:
Sie können GNU find
verwenden Um die Dateien mit der modifizierten Zeit, ausgedrückt als Epochenzeit, aufzulisten, verwenden Sie dann sort
um die Liste zu sortieren, schließlich head
und tail
um den gewünschten nummerierten Dateinamen zu erhalten:
find . -maxdepth 1 -type f -printf '%[email protected] %pn' | sort -k1,1nr | head -5 | tail -1