¡Así que sé que analizar ls es malo!.
Hoy encontré esta pepita:
FILENAME=`ls -t $READ_FOLDER | head -1`
Así que creo que originalmente esto fue diseñado para tomar el nombre de archivo más nuevo, en realidad ahora quiero adaptarlo, para tomar tal vez el quinto archivo más reciente ya que el proceso que lo está comprobando es un poco lento, por lo que no podemos estar seguros de que se haya procesado todavía.
Estoy trabajando en bash, pero tampoco me opongo a una solución genérica de sh.
Respuesta aceptada:
Puede usar GNU find
para enumerar los archivos con el tiempo modificado expresado como tiempo de época, luego use sort
para ordenar la lista, finalmente head
y tail
para obtener el nombre de archivo numerado deseado:
find . -maxdepth 1 -type f -printf '%[email protected] %pn' | sort -k1,1nr | head -5 | tail -1