IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

comparaison de fichiers


Sujet :

Shell et commandes GNU

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    199
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 199
    Par défaut comparaison de fichiers
    Bonjour
    Je voudrais savoir s'il était possible de comparer plus de deux fichiers entre eux.
    J'ai 6 fichiers à comparés.
    POur le moment j'utilise la fonction cmp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    cmp /space5/upload/ods_gicm/re7/cmo/FichierTest/F1K38683.FIC  /space5/upload/ods_gicm/re7/cmo/FichierTest/F1K45883.FIC

  2. #2
    Membre chevronné Avatar de iblis
    Inscrit en
    Janvier 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 59

    Informations forums :
    Inscription : Janvier 2007
    Messages : 510
    Par défaut
    Bonjour. Utilise diff et diff3. Un coup d'oeil à man t'en dira plus.

  3. #3
    Membre chevronné Avatar de iblis
    Inscrit en
    Janvier 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 59

    Informations forums :
    Inscription : Janvier 2007
    Messages : 510
    Par défaut
    Hmm 6 ? Pardon, j'avais lu 3. Ça doit être faisable, dans tous les cas diff est plus raffiné que cmp. Quelle est la nature et le format de tes fichiers, quelles différences cherches-tu ? Peut-être peux-tu faire ça dans un language de script.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    199
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 199
    Par défaut
    ce sont des fichiers txt.
    On cherche juste à savoir si il y a des différences et non lesquelles.

  5. #5
    Membre chevronné Avatar de iblis
    Inscrit en
    Janvier 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 59

    Informations forums :
    Inscription : Janvier 2007
    Messages : 510
    Par défaut
    Alors peu importe le nombre 2, 3, 6 ou que sais-je 1000. Utilise le fait que l´égalité est transitive (l'inégalité ne l'est pas) et compare deux à deux.

    Soit tu choisis un étalon et y compare tous les autres (la meilleur solution, si tes fichiers ont une forte probabilité d'être tous identiques), quitte à comparer ensuite entre eux ceux qui différent de l'étalon. Soit tu formes des couples, mais cette solution n'est viable qu'en dessous d'un certain nombre de fichiers.

    Sur 6 fichiers la première solution te permet déjà de voir très rapidement s'ils ne sont pas tous identiques et lesquels différent. A 6 tu peux te permettre de faire varier l'étalon (5 en tout).

    Un script bash devrait faire l'affaire.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    199
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 199
    Par défaut
    on ma demandé de faire un script shell
    et je dois comparer tous les fichiers entre eux donc on peux exclure l'idée de comparer les fichier par couple

  7. #7
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Par défaut
    Vu la conclusion erronée de ta dernière phrase, je te conseille d'étudier d'abord les bases de la logique avant de te lancer dans un script.

  8. #8
    Membre chevronné Avatar de iblis
    Inscrit en
    Janvier 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 59

    Informations forums :
    Inscription : Janvier 2007
    Messages : 510
    Par défaut
    Dans le post précédent, l'as-tu vraiment lu ?, je t'ai indiqué la méthode générale à suivre.

    Une comparaison se fait toujours entre deux éléments (par exemple pour décider s'ils sont identiques). Pour comparer un nombre donné d'éléments (peu importe que ce soit des fichiers ou des variables), tu dois d'abord les apparier. Plus haut, je t'invitais à réfléchir sur les hypothèses à faire sur tes données afin de réduire le nombre de couples à examiner et d'optimiser l'ordre dans lesquels tu les examines.

    Pour ta gouverne, bash est le bourne again shell ; si tu es sous Linux, c'est certainement ton shell par défaut.

    Et entre nous, si tu tiens des conseils des posts précédents ce n'est pas vraiment sorcier et ça tient en moins de dix lignes de code (grand maximum).

    Bien sûr personne ne le fera probablement pour toi mais si tu postes tes essais on peut t'aider.

  9. #9
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Par défaut
    Bonjour,

    Non, il n'est pas possible, en un seul appel de commande, de comparer 6 ficheirs entre eux.

    Ensuite, il faut savoir ce que tu souhaites obtenir comme résultat :
    • Savoir si les 6 fichiers sont identiques
    • Savoir si, parmi les 6 fichiers, certains sont identiques.


    La solution a la première possibilité t'a été donnée dans les précédetns postes : il suffit de comparer le premier fichier à chacun des 5 autres. Si tu trouves une différences à un moment, alors tu peux sortir : ils ne sont pas tous identiques.
    pour cela, tu peux utiliser diff ou cmp, en analysant les codes de retour.

    Pour la seconde possibilité, c'est plus complexe : tu as plus de comparaisons à faire. Si c'est ce que tu souhaites faire, écris l'algorithme sur un papier, et une fois que tu l'auras validé, alors seulement tu pourras t'intéresser au développement du script.

    Si tu as des problèmes sur l'algorithme, poses ta question dans le forum éponyme.
    Si tu as des questions sur le développement du script, postes ton scripts ici avec l'explication de ce qui pose problème et où tu coinces pour résoidre le problème.

    Cordialement,
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  10. #10
    Membre chevronné Avatar de iblis
    Inscrit en
    Janvier 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 59

    Informations forums :
    Inscription : Janvier 2007
    Messages : 510
    Par défaut
    Je n'aime pas mâcher le travail mais parfois un exemple aide à comprendre. Volià donc une solution simple. (Je suppose que tes fichiers sont file1 file2 ... file6)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #!/bin/bash
    n=6
    for ((i=1;i<n;i+=1)); do
        for ((j=i+1;j<=n;j+=1)); do
            cmp "file$i" "file$j"
        done
    done
    L'algorithme est élémentaire : il parcourt de manière exhaustive les paires non-ordonnées. C'est d'abord cela que tu dois comprendre ; la syntaxe vient ensuite (celle du shell est tout sauf déroutante).

    Si tu cherches les différences utilise diff (comme cela a été dit plus haut).

  11. #11
    Membre émérite Avatar de BlaireauOne
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    492
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2007
    Messages : 492
    Par défaut
    Citation Envoyé par cell Voir le message
    ce sont des fichiers txt.
    On cherche juste à savoir si il y a des différences et non lesquelles.
    Une solution rapide avec md5sum :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $ ls -1 Fic?
    Fic1
    Fic2
    Fic3
    Fic4
    Fic5
    Fic6

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $ md5sum Fic* | sort -k1,1
    1dcca23355272056f04fe8bf20edfce0 *Fic5
    26ab0db90d72e28ad0ba1e22ee510510 *Fic2
    6d7fce9fee471194aa8b5b6e47267f03 *Fic3
    b026324c6904b2a9cb4b88d6d61c81d1 *Fic1
    b026324c6904b2a9cb4b88d6d61c81d1 *Fic4
    b026324c6904b2a9cb4b88d6d61c81d1 *Fic6
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $ md5sum Fic* | sort -u -k1,1
    1dcca23355272056f04fe8bf20edfce0 *Fic5
    26ab0db90d72e28ad0ba1e22ee510510 *Fic2
    6d7fce9fee471194aa8b5b6e47267f03 *Fic3
    b026324c6904b2a9cb4b88d6d61c81d1 *Fic1

Discussions similaires

  1. Comparaison de fichiers text
    Par mick84m dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 22/07/2005, 17h48
  2. [Debutant(e)]comparaison de fichier : imprimer
    Par demostene dans le forum Eclipse Java
    Réponses: 7
    Dernier message: 06/07/2004, 11h43
  3. Comparaison de fichiers Word
    Par Zelphalya dans le forum Langage
    Réponses: 5
    Dernier message: 20/10/2003, 16h15
  4. [langage] Comparaison de fichiers
    Par Jibees dans le forum Langage
    Réponses: 3
    Dernier message: 23/04/2003, 17h27
  5. Comparaison de fichier
    Par danzerg dans le forum Langage
    Réponses: 2
    Dernier message: 21/02/2003, 12h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo