GNU/Linux >> Tutoriales Linux >  >> Linux

¿Obtener mtime de un archivo específico usando Bash?

stat puede darte esa información:

filemtime=$(stat -c %Y myfile.txt)

%Y le da la última modificación como "segundos desde The Epoch", pero hay muchas otras opciones; más información. Entonces, si el archivo se modificó el 22 de enero de 2011 a las 15:30 GMT, lo anterior devolvería un número en la región de 1295710237.

Editar :Ah, quieres el tiempo en días desde que se modificó. Eso va a ser más complicado, sobre todo porque un "día" no es un período de tiempo fijo (algunos "días" tienen solo 23 horas, otros 25, gracias al horario de verano).

El ingenuo la versión podría verse así:

filemtime=$(stat -c %Y "$1")
currtime=$(date +%s)
diff=$(( (currtime - filemtime) / 86400 ))
echo $diff

...pero de nuevo, eso suponiendo que un día siempre dura exactamente 86.400 segundos.

Más sobre aritmética en bash aquí.


AGE=$(perl -e 'print -M $ARGV[0]' $file)

establecerá $AGE a la edad de $file en días, como -M de Perl el operador maneja el stat llamada y la conversión a días para usted.

El valor devuelto es un valor de punto flotante (por ejemplo, 6,62849537 días). Añade un int a la expresión si necesita tener un resultado entero

AGE=$(perl -e 'print int -M $ARGV[0]' $file)

Ruby y Python también tienen sus frases ingeniosas para generar estadísticas en un archivo y devolver algunos datos, pero creo que Perl tiene la forma más concisa.


La utilidad de fecha tiene un interruptor conveniente para extraer el mtime de un archivo, que luego puede mostrar o almacenar usando una cadena de formato.

date -r file "+%F"
# 2021-01-12
file_mtime=$(date -r file "+%F")

Ver man date , la salida de la fecha está controlada por una cadena de formato que comienza con "+"

Las cadenas de formato útiles para comparar muchas fechas pueden incluir:

"+%j": day of year
"+%s": unix epoch time

La aritmética con fechas es un poco complicada en bash, por lo que si necesita un tiempo relativo que funcione en todos los casos, puede que esté mejor con otro idioma.


Linux
  1. Uso del comando Linux Basename en Bash Scripts

  2. Python FTP obtiene el archivo más reciente por fecha

  3. ¿Cómo obtener la fecha/hora de creación del archivo en Bash/Debian?

  4. ¿Redirigir toda la salida al archivo usando Bash en Linux?

  5. Comparación de fechas en Bash

Cómo obtener la fecha y hora actuales en Python

Cómo cambiar automáticamente el fondo de GNOME en intervalos usando BASH

Bash Beginner Series #5:Uso de operadores aritméticos en Bash Scripting

¿Cómo obtengo el directorio absoluto de un archivo en bash?

Obtenga una línea específica del archivo de texto usando solo un script de shell

Obtener la última fecha de modificación del archivo en Linux