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
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
À 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 ;-)
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):
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.
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 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.