Para un bash script que estoy desarrollando actualmente quiero acceder al nombre del archivo más recientemente editado (incluyendo carpetas pero no subdirectorios) en un directorio especificado. ¿Cómo puedo hacerlo?
Respuestas
¿Demasiados anuncios?
siva
Puntos
23
Usuario no registrado
Puntos
0
Analizar ls
es útil en la mayoría de los casos, pero a veces no es una buena idea .
Para tener una solución 100% segura, puede utilizar el find
y hacer que imprima la última vez que se accedió a todos los archivos. Al imprimirlo de forma numérica, pueden ordenar la lista e imprimir la última.
find /your/path -maxdepth 1 -print0 | xargs -0 stat -c "%Y %n" | sort -n | tail -1 | cut -d' ' -f2-
Explicación
-maxdepth 1
no profundiza en la estructura de directorios.xargs -0 stat -c "%Y %n"
obtiene el nombre del archivo e imprime su hora de última modificación más el nombre del archivo. (deman stat
: "%Y hora de la última modificación, segundos desde Epoch")sort -n
ordena la lista numéricamente, siendo el primero el más antiguo.tail -1
obtiene el último de la lista.cut -d' ' -f2-
elimina la impresión de la fecha.