Para un script de bash que estoy desarrollando actualmente, quiero acceder al nombre del archivo editado más recientemente (incluidas las carpetas pero no los subdirectorios) en un directorio específico. ¿Cómo hago esto?
Para un script de bash que estoy desarrollando actualmente, quiero acceder al nombre del archivo editado más recientemente (incluidas las carpetas pero no los subdirectorios) en un directorio específico. ¿Cómo hago esto?
Como sugirió @fedorqui, puedes hacer:
ls -1t | awk '{ print $9; exit}'
Publicación anterior:
Puedes obtenerlo usando awk
y tail
ls -lrt /path/to/folder/ | tail -1 | awk '{ print $9 }'
ls -t /path/to/folder/ | sed -n 1p
-t
ordena ls por fecha de modificación. La salida se canaliza a sed para obtener la primera línea de la salida.
El análisis de 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 usar el comando find
y hacer que se 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-
-maxdepth 1
no profundiza en la estructura del directorio. xargs -0 stat -c "%Y %n"
obtiene el nombre del archivo e imprime la hora de la última modificación más el nombre del archivo. (de man stat
: "% Y tiempo de la última modificación, segundos desde la época") 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 y hora.