Commande if pour comparaison de fichiers [Résolu/Fermé]

Messages postés
186
Date d'inscription
dimanche 27 janvier 2008
Statut
Membre
Dernière intervention
2 septembre 2011
- - Dernière réponse : dubcek
Messages postés
17933
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2019
- 6 sept. 2008 à 10:52
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
Afficher la suite 

9 réponses

Meilleure réponse
Messages postés
21511
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3393
1
Merci
Salut,

utilises plutôt la commande diff ou cmp

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 71391 internautes nous ont dit merci ce mois-ci

1
Merci
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

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 71391 internautes nous ont dit merci ce mois-ci

0
Merci
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 ...
Messages postés
186
Date d'inscription
dimanche 27 janvier 2008
Statut
Membre
Dernière intervention
2 septembre 2011
5
0
Merci
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
Messages postés
17933
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2019
4505
0
Merci
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.
Messages postés
21511
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3393
0
Merci
Salut,

en fait tu n'as pas besoin de if
lami20j@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:~$

Messages postés
17933
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2019
4505
0
Merci
diff -q est une option diff Linux, je ne suis pas sûr qu'elle existe sur AIX
Messages postés
21511
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3393
0
Merci
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
jipicy
Messages postés
43479
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
9 octobre 2019
4610 > dubcek
Messages postés
17933
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2019
-
Ou utiliser bdiff ;-))
lami20j
Messages postés
21511
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3393 > dubcek
Messages postés
17933
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2019
-
Re,

je suis d'accord avec toi
c'est inutile de tester jusqu'au bout si une différence est trouvée
jipicy
Messages postés
43479
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
9 octobre 2019
4610 > lami20j
Messages postés
21511
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
-
Faignant ;-DDD
lami20j
Messages postés
21511
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3393 > jipicy
Messages postés
43479
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
9 octobre 2019
-
Ben, pour une fois ce n'est pas moi, c'est lui ;-DDD

en plus il parle en SMS diff f1 f2 | awk '/^</ {exit 1}' ;-DDDDD
dubcek
Messages postés
17933
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2019
4505 > lami20j
Messages postés
21511
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
-
Il fût un temps que les moins de 20 ans ...
où les CPU étaient 8 ou 16 bits, les dsques lents et la RAM coûteuse, alors vive les économies
Messages postés
43479
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
9 octobre 2019
4610
0
Merci
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]$
;-))