2 votos

Bash: Devuelve el archivo editado más recientemente en un directorio especificado

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?

2voto

hjdm Puntos 18

Como sugirió @fedorqui Se puede hacer:

ls -1t | awk '{ print $9; exit}'

Puesto antiguo:

Puedes conseguirlo utilizando awk y tail

ls -lrt /path/to/folder/ | tail -1 | awk '{ print $9 }'

1voto

siva Puntos 23
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.

0voto

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. (de man 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.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X