Tester une date de fichier avec bash

j'essaie de tester l'âge d'un fichier créé (en secondes) avec bash dans un if déclaration. J'ai besoin de la date de création, Pas de modification.

avez-vous une idée de comment faire cela, sans utiliser une commande comme findgrep?

13
demandé sur whoan 2009-11-30 14:12:29

4 réponses

je crains de ne pas pouvoir répondre à la question pour le temps de création, mais pour la dernière modification vous pouvez utiliser ce qui suit pour obtenir le date d'époque, en secondes, car nom du fichierdernière modification:

date --utc --reference=filename +%s

Si vous pourriez alors quelque chose comme:

modsecs=$(date --utc --reference=filename +%s)
nowsecs=$(date +%s)
delta=$(($nowsecs-$modsecs))
echo "File $filename was modified $delta secs ago"

if [ $delta -lt 120 ]; then
  # do something
fi

etc..

mise à Jour Plus elgant façon de le faire (encore une fois, l'heure de modification uniquement): Comment puis-je enregistrer bash si un fichier a été créé il y a plus de x fois?

19
répondu Joel 2017-05-23 11:46:36

Voici la meilleure réponse que j'ai trouvée pour le moment, mais c'est seulement pour le temps de modification :

expr `date +%s` - `stat -c %Y /home/user/my_file`
7
répondu JeffPHP 2009-11-30 18:14:55

Si votre système a stat:

modsecs=$(stat --format '%Y' filename)

Et vous pouvez faire le calcul comme suit: Joel