Bash: devuelve el archivo editado más recientemente en un directorio específico

2

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?

    
pregunta David Knaack 11.04.2014 - 18:52

3 respuestas

2

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 }'

    
respondido por el Mateusz Szlosek 11.04.2014 - 19:50
1
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.

    
respondido por el grg 11.04.2014 - 18:54
0

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-

Explicación

  • -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.
respondido por el user75460 11.04.2014 - 21:41

Lea otras preguntas en las etiquetas