Comment comparer l'horodatage de deux fichiers?
J'ai essayé mais ça ne marche pas:
file1time=`stat -c %Y fil1.txt`
file2time=`stat -c %Y file2.txt`
if[$file1time -gt $file2time];
then
doSomething
fi
J'ai imprimé les deux horodatages, dans l'ordre et ça me donne
1273143480
1254144394
./script.sh: line 13: [1273143480: command not found
Donc, fondamentalement, si la comparaison ne fonctionne pas, je suppose. Ou s'il y a une autre manière agréable que ce que je fais, faites-le moi savoir. Que dois-je changer?
linux
bash
comparison
timestamp
newcoderintown
la source
la source
Réponses:
Les opérateurs pour comparer les horodatages sont:
Le mnémonique est simple: «plus récent que» et «plus ancien que».
la source
Cela est dû à certains espaces manquants.
[
est une commande, elle doit donc avoir des espaces autour d'elle et]
est un paramètre spécial pour lui indiquer où se termine sa ligne de commande. Ainsi, votre ligne de test devrait ressembler à:la source
[
est une commande de test - voir la section "EXPRESSIONS CONDITIONNELLES" de labash
page de manuel. Il y a aussi un exécutable autonome dans/usr/bin/test
et/usr/bin/[
, mais si vous utilisez bash et n'utilisez pas le chemin complet, vous utilisez le shell intégré.if
n'est pas magique. Il tente d'exécuter la commande qui lui est transmise et vérifie si son état de sortie est nul. Il ne gère pas non plus les arguments inexistants, c'est pourquoi vous devez citer les variables qui y sont utilisées.la source
la source