Commande if pour comparaison de fichiers
Résolu
stephbret56
Messages postés
195
Statut
Membre
-
dubcek Messages postés 18627 Date d'inscription Statut Contributeur Dernière intervention -
dubcek Messages postés 18627 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je travail sous un système d'exploitation AIX et je recherche la commande de comparaison d'un fichier à un autre
J'ai essayé
if [ -f /tmp/fic1 = /tmp/fic2 ]
then
echo " Le fichier fic1 est identique au fichier fic2"
else
echo "Le fichier fic1 n'est pas identique au fichier fic2"
fi
Je passe toujours dans l'echo "Le fichier fic1 est identique au fichier fic2" même si les fichiers sont différents.
Comment puis-je faire avec la commande if
merci de votre aide
Je travail sous un système d'exploitation AIX et je recherche la commande de comparaison d'un fichier à un autre
J'ai essayé
if [ -f /tmp/fic1 = /tmp/fic2 ]
then
echo " Le fichier fic1 est identique au fichier fic2"
else
echo "Le fichier fic1 n'est pas identique au fichier fic2"
fi
Je passe toujours dans l'echo "Le fichier fic1 est identique au fichier fic2" même si les fichiers sont différents.
Comment puis-je faire avec la commande if
merci de votre aide
Configuration: UNIX AIX
9 réponses
-
Salut,
utilises plutôt la commande diff ou cmp -
Bonjour
Je suppose que ce sont les contenus de fichier (et non leurs noms) que vous voulez comparer...
Si oui, if faut utiliser l'option -q de diff, ça répond 0 (TRUE) s'il y a une différence
if diff -q fichier1 fichier2
then
echo different files
else
echo identical files
fi
Manu -
bonjour,
la commande diff fic1 fic2 liste les différences (si il y en a)
la commande cmp renvoie false dès que la comparaison échoue (les deux fichiers sont différents
reste plus que le if à contruire ... -
Merci pour le réponse j'ai réussi à construire le if avec le diff je vous donnes la réponse
#!/bin/ksh
if diff /tmp/dif1 /tmp/dif2 1>/dev/null
then
echo "Le Fichier dif1 est identique au fichier dif2"
else
echo "Le Fichier dif1 n'est pas identique au fichier dif2"
fi
Merci encore de l'aide à bientot et bon week-en à tous -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
hello
je commencerais par comparer la taille des fichiers. Si elle est différente, pas besoin de diff qui peut être long sur des gros fichiers. -
Salut,
en fait tu n'as pas besoin de iflami20j@debian:~$ cat fic1 bla bla bla lami20j@debian:~$ cat fic2 bla bla bla lami20j@debian:~$ cat fic3 tra la la lami20j@debian:~$ diff -q fic1 fic2 lami20j@debian:~$ diff -q fic1 fic3 Les fichiers fic1 et fic3 sont différents. lami20j@debian:~$ diff -q fic1 fic2 && echo "les fichiers sont identiques" les fichiers sont identiques lami20j@debian:~$ diff -q fic1 fic3 && echo "les fichiers sont identiques" Les fichiers fic1 et fic3 sont différents. lami20j@debian:~$
-
diff -q est une option diff Linux, je ne suis pas sûr qu'elle existe sur AIX
-
Salut,
alors il pourra faire comme ça ;-)lami20j@debian:~$ cat fic1 bla bla bla lami20j@debian:~$ cat fic2 bla bla bla lami20j@debian:~$ cat fic3 tra la la lami20j@debian:~$ cat mydiff.sh #!/bin/sh test=$(diff $1 $2); if [ -z "$test" ];then echo "fichiers identiques" else echo "fichiers différents" fi lami20j@debian:~$ sh mydiff.sh fic1 fic2 fichiers identiques lami20j@debian:~$ sh mydiff.sh fic1 fic3 fichiers différents lami20j@debian:~$--
106485010510997108 -
Effectivement l'option "-q" n'est pas présente sur la commande "diff" des "AIX" (voir Commands reference - man diff)
Par contre la commande "cmp" est la même sur UNIX et GNU/Linux :[tmpfs]$ cat fic1 blablabla [tmpfs]$ cat fic2 blablabla [tmpfs]$ cat fic3 bla bla bla [tmpfs]$ cmp -s fic1 fic2 [tmpfs]$ echo $? 0 [tmpfs]$ cmp -s fic1 fic3 [tmpfs]$ echo $? 1 [tmpfs]$
;-))