Rechercher : dans
Par :

Commande if pour comparaison de fichiers

Dernière réponse le 6 sep 2008 à 10:52:10 stephbret56, le 5 sep 2008 à 15:09:48 
 Signaler ce message aux modérateurs

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

Configuration: UNIX
AIX

Meilleures réponses pour « Commande if pour comparaison de fichiers » dans :
[MS-Dos] Lister le contenu d'un répertoire dans un fichier VoirIl peut s'avérer pratique d'effectuer le listage d'un ou plusieurs répertoires dans un fichier, afin de tenir par exemple un catalogue de fichiers. Sous MS-Dos (ou sous Windows en ouvrant une fenêtre d'invite de commande MS-Dos) il est possible...
Commandes UNIX VoirTableau des principales commandes UNIX Commande Unix Description Options ls liste le contenu d'un répertoire -a Affiche tous les fichiers, y compris les fichiers cachés ...
Commandes Linux VoirTableau des principales commandes Linux Commande Description équivalent DOS ls liste le contenu d'un répertoire dir cd change de répertoire cd cd .. répertoire parent cd.. mkdir crée un nouveau...
UNIX - Les fichiers VoirIntroduction aux fichiers Unix Sous les systèmes UNIX tout élément est représenté sous forme de fichier. L'ensemble des fichiers est architecturé autour d'une unique arborescence dont la base, appelée racine, est notée «/». Types de...

1

jj, le 5 sep 2008 à 15:26:48

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 ...

Répondre à jj

2

lami20j, le 5 sep 2008 à 15:29:10

Salut,

utilises plutôt la commande diff ou cmp 106485010510997108

Répondre à lami20j

3

stephbret56, le 5 sep 2008 à 15:44:54

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

Répondre à stephbret56

4

dubcek, le 5 sep 2008 à 16:09:14

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.

Répondre à dubcek

5

Manu, le 5 sep 2008 à 17:06:34
  • +1

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

Répondre à Manu

6

lami20j, le 5 sep 2008 à 17:53:40

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:~$

106485010510997108

Répondre à lami20j

7

dubcek, le 6 sep 2008 à 09:32:29

Diff -q est une option diff Linux, je ne suis pas sûr qu'elle existe sur AIX

Répondre à dubcek

8

lami20j, le 6 sep 2008 à 09:51:04

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

Répondre à lami20j

11

dubcek, le 6 sep 2008 à 10:16:56

Mais si les fichiers sont grands, on peut arrêter le diff à la première différence
diff f1 f2 | awk '/^</ {exit 1}'

Répondre à dubcek

12

jipicy, le 6 sep 2008 à 10:19:09

Ou utiliser bdiff ;-))
$ man woman
Il n'y a pas de page de manuel pour woman.

Répondre à jipicy

13

lami20j, le 6 sep 2008 à 10:19:36

Re,

je suis d'accord avec toi
c'est inutile de tester jusqu'au bout si une différence est trouvée 106485010510997108

Répondre à lami20j

14

jipicy, le 6 sep 2008 à 10:25:28

Faignant ;-DDD
$ man woman
Il n'y a pas de page de manuel pour woman.

Répondre à jipicy

15

lami20j, le 6 sep 2008 à 10:33:51

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 106485010510997108

Répondre à lami20j

16

 dubcek, le 6 sep 2008 à 10:52:10

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

Répondre à dubcek

10

jipicy, le 6 sep 2008 à 10:05:00

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]$
;-))
$ man woman
Il n'y a pas de page de manuel pour woman.

Répondre à jipicy