por - script fecha y hora linux
¿Cómo obtener tiempo desde la última modificación del archivo en segundos con bash? (3)
Necesito obtener el tiempo en segundos desde la última modificación de un archivo. ls -l
no lo muestra.
En BASH, use esto por segundos desde la última modificación:
expr `date +%s` - `stat -c %Y /home/user/my_file`
La implementación de la date
GNU tiene una opción -r
para imprimir la fecha de la última modificación de un archivo en lugar de la fecha actual. Y podemos usar el especificador de formato %s
para obtener el tiempo en segundos, lo que es conveniente para calcular las diferencias de tiempo.
lastModificationSeconds=$(date +%s -r file.txt)
currentSeconds=$(date +%s)
Y luego puede usar el contexto aritmético para calcular la diferencia, por ejemplo:
((elapsedSeconds = currentSeconds - lastModificationSeconds))
# or
elapsedSeconds=$((currentSeconds - lastModificationSeconds))
También puede calcular e imprimir los segundos transcurridos directamente sin variables temporales:
echo $(($(date +%s) - $(date +%s -r file.txt)))
Lamentablemente, la implementación de la date
BSD (por ejemplo, en Mac OS X) no es compatible con el indicador -r
. Para obtener los últimos segundos de modificación, puede usar el comando stat
lugar, como sugieren otras respuestas. Una vez que tenga eso, el resto del procedimiento es el mismo para calcular los segundos transcurridos.
Sé que la etiqueta es Linux, pero la sintaxis stat -c
no funciona para mí en OSX. Esto funciona ...
echo $(( $(date +%s) - $(stat -f%c myfile.txt) ))
Y como una función para ser llamado con el nombre de archivo:
lastmod(){
echo "Last modified" $(( $(date +%s) - $(stat -f%c "$1") )) "seconds ago"
}