113 votes

comment puis-je vérifier dans bash si un fichier a été créé il y a plus de x fois?

Je veux vérifier dans linux bash si un fichier a été créé il y a plus de x fois.

Supposons que le fichier s'appelle text.txt et qu'il dure 2 heures.

  if [ what? ]
 then
     echo print "old enough"
 fi
 

155voto

kmkaplan Points 10338

Seulement pour le temps de modification

 if test `find "text.txt" -mmin +120`
then
    echo old enough
fi
 

Vous pouvez utiliser -cmin pour le changement ou -amin pour le temps d'accès. Comme d'autres l'ont souligné, je ne pense pas que vous puissiez suivre le temps de création.

49voto

nemik Points 258

J'ai toujours aimé utiliser date -r /the/file +%s pour trouver son âge.

29voto

Guss Points 6512

À l'aide de l' stat à la figure la date de dernière modification du fichier, date de comprendre à l'heure actuelle et une utilisation libérale de bashisms, on peut faire le test que vous souhaitez basé sur le fichier de la dernière date de modification (qui, comme Phil correctement indiqué n'est pas enregistré).

if [ "$(( $(date +"%s") - $(stat -c "%Y" $somefile) ))" -gt "7200" ]; then
   echo "$somefile is older then 2 hours"
fi

Alors que le code est un peu moins lisible, alors l' find approche, je pense que c'est une meilleure approche, puis en exécutant find pour regarder un fichier que vous avez déjà "trouvé". Aussi, la date de la manipulation, c'est amusant ;-)

17voto

Philip Reynolds Points 5118

L'heure de création n'est pas enregistrée.

Trois horodatages sont stockés (généralement, ils peuvent être désactivés sur certains systèmes de fichiers ou par certaines options du système de fichiers):

  • Dernier accès
  • Dernière heure de modification
  • Dernier changement heure

un "changement" dans le fichier est considéré comme une modification d'autorisation, un changement de nom, etc. Bien que la modification concerne uniquement le contenu.

13voto

Maryam Jeddian Points 131

Bien que ctime n'est pas techniquement le temps de la création, il est tout à fait souvent.

Depuis ctime elle n'est pas affectée par les modifications apportées au contenu du fichier, il est généralement mis à jour uniquement lorsque le fichier est créé. Et oui - je peux vous entendre tous les cris, c'est aussi la mise à jour si vous modifiez les autorisations d'accès ou de la propriété... mais en général, c'est quelque chose qui fait qu'une fois, généralement en même temps que vous mettez le fichier.

Personnellement j'ai toujours utiliser mtime pour tout, et j'imagine que c'est ce que vous voulez. Mais de toute façon... voici une resucée de Guss "peu attrayant" bash, dans un facile à utiliser la fonction.

#!/bin/bash
fonction age() {
 nom local=$1
 local changé= " stat -c %Y "$filename"`
 local maintenant=`date +%s`
 local écoulé

 laissez écoulé=maintenant changé
 echo $écoulé
}

fichier="/"
l'écho de L'âge de $fichier $(âge "$fichier") secondes.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X