GNU/Linux >> Tutoriales Linux >  >> Linux

¿Encontrar la edad del archivo más antiguo en una línea o devolver cero?

Quiero encontrar la antigüedad del archivo más antiguo en un directorio determinado o devolver 0 si no hay ningún archivo en este directorio. También necesito un comando de una línea para hacerlo. Hasta ahora, este es mi comando para encontrar la edad en segundos del archivo más antiguo en el directorio:

expr $(($(date +%s) - $(stat -c %Y $(ls -lt /path/to/dir/ | tail -1 | awk '{print $NF}'))))

El problema es que si no hay archivos devuelve el siguiente error:

$ expr $(($(date +%s) - $(stat -c %Y $(ls -lt /path/to/dir/ | tail -1 | awk '{print $NF}'))))
stat: cannot stat ‘0’: No such file or directory
-bash: 1554373460 - : syntax error: operand expected (error token is "- ")

Entonces, en este caso, quiero que el comando devuelva solo 0 y suprima la impresión de error.

Respuesta aceptada:

Si debe ser una línea:

stat -c %Y ./* 2>/dev/null | awk -v d="$(date +%s)" 'BEGIN {m=d} $0 < m {m = $0} END {print d - m}'
  • stat -c %Y ./* 2>/dev/null imprima la marca de tiempo de todos los archivos, ignorando los errores (por lo que si no hay archivos, no habrá salida)
  • Con awk:

    • -v d="$(date +%s)" guardar la marca de tiempo actual en una variable d
    • BEGIN {m=d} inicializar m a d
    • $0 < m {m = $0} haciendo un seguimiento del mínimo en m
    • END {print d - m} imprime la diferencia.

Linux
  1. ¿Cómo recorrer las líneas de un archivo?

  2. Bash Script para eliminar el archivo más antiguo de una carpeta?

  3. ¿Cómo mover una línea en un archivo de texto hacia arriba o hacia abajo una línea?

  4. Convierta los finales de línea de Unix a Windows

  5. ¿Cómo puedo encontrar el archivo más antiguo en un árbol de directorios?

Ver el contenido de un archivo en la línea de comandos de Linux

Cómo encontrar las líneas más largas en un archivo en Linux

¿Encontrar la línea de comando?

Encuentra la versión de WordPress desde la línea de comandos

¿Cómo encuentro la ubicación MySQL my.cnf?

¿Cómo encontrar el administrador de archivos predeterminado?