GNU/Linux >> Tutoriels Linux >  >> Linux

Trouver l'âge du fichier le plus ancien sur une ligne ou renvoyer zéro ?

Je veux trouver l'âge du fichier le plus ancien dans un certain répertoire ou retourner 0 s'il n'y a aucun fichier dans ce répertoire. J'ai aussi besoin d'une commande en une ligne pour le faire. Jusqu'à présent, voici ma commande pour trouver l'âge en secondes du fichier le plus ancien du répertoire :

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

Le problème est que s'il n'y a pas de fichiers, il renvoie l'erreur suivante :

$ 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 "- ")

Donc, dans ce cas, je veux que la commande renvoie uniquement 0 et supprime l'impression d'erreur.

Réponse acceptée :

S'il doit s'agir d'une seule ligne :

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 imprimer l'horodatage de tous les fichiers, en ignorant les erreurs (donc aucun fichier n'entraîne aucune sortie)
  • Avec awk :

    • -v d="$(date +%s)" enregistrer l'horodatage courant dans une variable d
    • BEGIN {m=d} initialiser m à d
    • $0 < m {m = $0} garder une trace du minimum en m
    • END {print d - m} imprimer la différence.

Linux
  1. Comment boucler sur les lignes d'un fichier ?

  2. Comment obtenir la somme Md5 du contenu d'un répertoire en une seule somme ?

  3. Linux - Décompresser et désarchiver le fichier .tar.gz à l'aide de Cat, Tar et Gzip sur une seule ligne de commande ?

  4. Trouver l'URL d'un fichier

  5. Trouver la version de WordPress à partir de la ligne de commande

Afficher le contenu d'un fichier dans la ligne de commande Linux

Comment trouver la ou les lignes les plus longues dans un fichier sous Linux

Encoder le contenu du fichier et le répercuter sur une seule ligne ?

Trouver la ligne de commande ?

Comment puis-je trouver l'emplacement MySQL my.cnf

Comment trouver le gestionnaire de fichiers par défaut ?