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 :

Diff sur fichier PHP


Sujet :

Shell et commandes GNU

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 13
    Points : 7
    Points
    7
    Par défaut Diff sur fichier PHP
    Bonjour tout le monde,

    Je dois réaliser un script en Java servant à comparer deux fichiers Php.
    Le but est de comparer les différences entre deux fichiers ayant le même nom (par exemple lors de nouvelles releases).

    J'ai fais quelques recherches, mais je ne trouve pas de script Java permettant de faire cela.
    Quelqu'un aurait-il des sources à me donner, ou des idées pour débuter un script à 0 ?

    Merci de votre aide,

    Fabien

  2. #2
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    Tu es sur que c'est un script en java?

    je connais les programmes java et les scripts javascript... mais pas les scripts java

    ps: je connais aussi le programme diff, pourquoi réinventer la roue.
    Il y a aussi le plugin compare de notepad++, qui est très pratique
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Oui oui, désolé, je dois écrire un programme java capable de faire la différence entre deux fichiers Php.
    Avec le numéro de ligne, et le pourcentage de ressemblance/différence.

  4. #4
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    Soit tu travailles dur, soit tu utilises la magie de diff, avec les bons arguments, en te contentant de parser le résultat.
    Voire même, tu utilise java-diff-utils (google sera ton ami)

    Si c'est un exercice que tu dois faire, explique-nous ce que tu as déjà fait ou tenté.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Excusez moi pour le temps de réponse,

    En fait, je me suis mieux entendu avec ma tutrice de stage, et je vais utiliser la commande Linux "diff" pour faire la différence entre les deux fichiers.
    Il faut que je compte également le nombre de différences. Pour ça, j'ai pu m'apercevoir qu'il y avait des "." à la fin de chaque différence, du coup, je fais un grep sur ceux-ci, et je compte le nombre de lignes.

    Commande : diff -e -B FileOne FileTwo | grep ^[.] | wc -l > file3

    Il faut maintenant que je trouve comment faire le pourcentage de changement,
    je pense qu'on peut savoir le nombre de lignes d'un fichier texte, du coup, je pense faire : (NbreChangements/NbreLignes)*100

    Vous en pensez quoi?

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Citation Envoyé par Fabiendst Voir le message
    ...
    Il faut maintenant que je trouve comment faire le pourcentage de changement,
    je pense qu'on peut savoir le nombre de lignes d'un fichier texte, du coup, je pense faire : (NbreChangements/NbreLignes)*100

    Vous en pensez quoi?
    J'en pense :

    • Que c'est probablement la seule solution (à coup de wc -l, et de expr peut être bien...) ;
    • Que ta question n'a plus grand chose à voir avec java. Peut être devrait-on la déplacer vers un forum plus adéquat ? Qu'en penses-tu ?
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    Oui, je suis désolé pour le hors sujet, je pensais faire un programme Java à la base.

  8. #8
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    Bonjour,

    Citation Envoyé par Fabiendst Voir le message
    Vous en pensez quoi?
    Je pense que chaque ligne devrait se terminer par un point virgule avant de comparer car si non, ta comparaison sera caduque.
    Pour se faire, j'utiliserais sed. Et je supprimerais les tabulations et espaces superflus.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    System.out.println(
    "Hello la compagnie"
    );
    est identique à

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println("Hello la compagnie");
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  9. #9
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 278
    Points : 12 726
    Points
    12 726
    Par défaut
    Bonjour,

    Après avoir fait ton diff, tu peux peut-être utiliser diffstat ....
    Cordialement.

  10. #10
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Points : 19 452
    Points
    19 452
    Par défaut
    Bonsoir.

    @Flodelarab : pour un diff traditionnel (comme le "compare with each other" de eclipse, vimdiff, commande diff ou autres), les deux lignes que tu cites ne sont pas identiques

    En tout cas c'est à définir dans le besoin si la comparaison doit ignorer les espaces et retours à la lignes entre instructions ou pas.

    Idriss

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    Tout d'abord, merci pour vos réponses.

    Je ne dois pas tenir compte des sauts de lignes, suppression de lignes vides, ou de Tab'.

  12. #12
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Points : 19 452
    Points
    19 452
    Par défaut
    Re-bonsoir.

    Citation Envoyé par Fabiendst Voir le message
    Commande : diff -e -B FileOne FileTwo | grep ^[.] | wc -l > file3
    "Limiter les processus superflus !"

    =>

    Citation Envoyé par man grep
    -c, --count
    Suppress normal output; instead print a count of matching lines
    for each input file. With the -v, --invert-match option (see
    below), count non-matching lines. (-c is specified by POSIX.)
    Donc le wc -l n'est pas utile avec cette option

    Citation Envoyé par Fabiendst Voir le message
    Je ne dois pas tenir compte des sauts de lignes, suppression de lignes vides, ou de Tab'.
    Donc la proposition de Flodelarab est à retenir

    Cordialement,
    Idriss

  13. #13
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Mais le -c ne me dit pas le nombre de différences il me semble non?
    (Seulement le nombre de lignes de l'output normal).

  14. #14
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Points : 19 452
    Points
    19 452
    Par défaut
    Citation Envoyé par Fabiendst Voir le message
    Mais le -c ne me dit pas le nombre de différences il me semble non?
    (Seulement le nombre de lignes de l'output normal).
    wc -l va compter le nombre de ligne sur la sortie standard (donc le nombre de lignes matchées par grep).

    Citation Envoyé par man wc
    -l The number of lines in each input file is written to the standard output.
    grep -c va compter le nombre de ligne matchées par le motif passé en paramètre (ce qui correspondrait au nombre de lignes que grep aurait renvoyé sur stdout si on avait pas mis -c).

    Donc aucune différence entre les deux si ce n'est que dans un cas, tu fait appel à un programme de plus ... pour rien (même si c'est négligeable)

    Autre remarque :

    Citation Envoyé par Fabiendst Voir le message
    Pour ça, j'ai pu m'apercevoir qu'il y avait des "." à la fin de chaque différence, du coup, je fais un grep sur ceux-ci, et je compte le nombre de lignes.
    Ton motif match les lignes qui commencent par "." ...

    Idriss

  15. #15
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Pour les ".", je sais, j'ai remarqué qu'il y en avait un à chaque différence trouvée.
    Je n'ai malheureusement pas trouvé de meilleur moyen. :/

    Par exemple, quand "Coucou, je m'appelle Fabien" devient "Salut, je m'appelle Fabien", ça me compterai 2 différences :
    < Coucou, je m'appelle Fabien
    > Salut, je m'appelle Fabien

    Alors que je veux que ça n'en soit qu'une

    (Oui, je sais un ami m'a dit "Tu n'as qu'à diviser par deux", mais ça ne marche pas comme ça à chaque coup. :/)

  16. #16
    Membre régulier Avatar de nanooby
    Homme Profil pro
    IT Consultant
    Inscrit en
    Mai 2014
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : IT Consultant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mai 2014
    Messages : 103
    Points : 111
    Points
    111
    Par défaut
    Citation Envoyé par Fabiendst Voir le message
    Pour les ".", je sais, j'ai remarqué qu'il y en avait un à chaque différence trouvée.
    Je n'ai malheureusement pas trouvé de meilleur moyen. :/

    Par exemple, quand "Coucou, je m'appelle Fabien" devient "Salut, je m'appelle Fabien", ça me compterai 2 différences :
    < Coucou, je m'appelle Fabien
    > Salut, je m'appelle Fabien

    Alors que je veux que ça n'en soit qu'une

    (Oui, je sais un ami m'a dit "Tu n'as qu'à diviser par deux", mais ça ne marche pas comme ça à chaque coup. :/)
    Alors non, ça ne te compte pas deux différence, ça te montre la ligne dans le premier ainsi que celle dans le deuxième fichier. Tu as bien ici une seule différence car avant ces deux ligne, 1 et 1 seule ligne diff est présente.
    J'ai eu il y a peu de temps besoin de diff, et de réaliser des opérations deçu. Voici ce qu'on m'a aidé à réaliser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    diff -rs  ${Rep_resultats}/ ${Rep_modeles}/ | awk '
    	/^Files.+ are identical$/ {
    	   gsub(/^.+\//,"",$(NF-2));
    	   gsub(/.xml/,"",$(NF-2));
    	   print $(NF-2) " : OK" > Rapport_de_test;
    	   next;
    	}
    	/^diff -rs.+ / {
    	   print $0 > Resultat_diff;
    	   gsub(/^.+\//,"",$4);
    	   gsub(/.xml/,"",$4);
    	   print $4 " : KO" > Rapport_de_test;
    	   next;
    	}
    	/^[<|>]+.+/ {
    	   print $0 > Resultat_diff;
    	   next;
    	}
    	' Rapport_de_test="${Rapport_de_test}" Resultat_diff="${Resultat_diff}"
    Ici, je compare deux répertoires récursivement, et pour chaque fichier ayant son double (comparaison du nom), il réalise un diff sur les deux fichiers.
    Ensuite j'utilise la fonction awk qui me permet sur chaque ligne de la sortie du diff, de réaliser une action.
    Dans le premier cas, si mon retour du diff me dit que les fichiers sont identiques, j'écris le nom du fichier et " : OK".
    Deuxième cas, si le retour du diff correspond à une différence des fichiers, j'écris le nom du fichier et " : KO", et j'insère ma ligne dans un fichier pour récupérer les erreurs de mon diff.
    Troisième cas, si ma ligne ne correspond pas au deux types précédents, c'est le cas des fameuses lignes dont tu as parlé, je vérifie que c'est bien ça et je les insères dans mon fichier de résultat du diff pour récupérer les erreurs.

    Ceci peut évidemment s'adapter pour ton problème. Il suffit de garder ton diff et de réaliser les différentes actions en fonction du résultat. Tu peux utiliser des variables que tu incrémente et réaliser une opération dessus à la fin.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    diff -bBs  fichier1 fichier2 | awk '
    	/^Files.+ are identical$/ {
               Compteur_no_diff+=1;
    	   next;
    	}
    	/^diff -bBs.+ / {
               Compteur_diff+=1;
    	   next;
    	}
    	' Compteur_no_diff="${Compteur_no_diff}" Compteur_diff="${Compteur_diff}"
    EDIT : Tu dois d'abord déclarer tes variables dans le shell, ensuite tu les utilises dans le awk grâce à la dernière ligne. Il faut également les initialiser à 0.

    Pour réaliser le calcul final (pourcentage), je laisserai les autres répondre, je veux pas dire de bêtises.

    Cette solution te permet de faire un diff sur deux fichiers que tu pourrais renseigner en paramètre de ton script (http://frederic-lang.developpez.com/...l/?page=page_6)
    Sinon, j'ai vu qu'au début tu parlais de deux fichiers portant le même nom. Je sais pas trop si tu en as plusieurs à comparer, et comment ils sont stockés, mais rien ne t’empêche de faire la même chose que moi, c'est à dire faire un diff sur les fichiers grâce à la récursivité de diff. Pour info :

    -b
    --ignore-space-change
    Ignore changes in the amount of white space.

    -B
    --ignore-blank-lines
    Ignore changes whose lines are all blank.

    -r
    --recursive
    Recursively compare any subdirectories found.

    -s
    --report-identical-files
    Report when two files are the same.
    J'espère t'avoir aidé
    Les autres passeront pour améliorer/modifier ma solution.

  17. #17
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par Fabiendst Voir le message
    Oui oui, désolé, je dois écrire un programme java capable de faire la différence entre deux fichiers Php.
    Avec le numéro de ligne, et le pourcentage de ressemblance/différence.
    Comment est spécifié le pourcentage de ressemblance/différence?????

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    $ cat plop1
    aaaa
    bbbbbbbbbbbbbbbb
    cccccccccccccccc
    dddddddddddddddd
    eeee
    ffffffffffffffffffff
    gggggggggggggggg
    hhhh
     
    $ cat plop2
    aaaa
    CCCC
    eeee
    GGGG
    Le 1er fichier a 8 lignes, le 2nd a 4 lignes. Ils ont 2 lignes en commun. Pour le 1er, le pourcentage de lignes communes est donc 2/8 soit 1/4. Pour le 2nd, le pourcentage de lignes communes est 2/4 soit 1/2.
    Donc leur "ressemblance" est 1/4 ou 1/2?

    De plus, si on compte les caractères en commun et non plus les lignes, le résultat est encore différent.

    En outre, remarquons que le résultat du diff correspond toujours à une structure du genre: répétition de {{bloc de lignes identiques} {bloc de lignes différentes}} (avec la possibilité (que nous négligerons dans la suite) qu'il manque le {bloc de lignes identiques} initial ou le {bloc de lignes différentes} final).

    En conséquence, le nombre de {bloc de lignes identiques} est toujours égal au nombre de {bloc de lignes différentes} (à +1 ou -1 près).
    Donc, nb de {blocs de lignes différentes} / nb total de blocs = 1/2

    Donc, si on ne prend en considération que le nombre de blocs différents (comme le propose la méthode suggérée de comptage de '^[.]$'), le "pourcentage de différence" est toujours 1/2, (ce qui simplifie considérablement le programme!).

    De l'importance des spécifications précises... (surtout pour un chipoteur...)

  18. #18
    Membre régulier Avatar de nanooby
    Homme Profil pro
    IT Consultant
    Inscrit en
    Mai 2014
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : IT Consultant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mai 2014
    Messages : 103
    Points : 111
    Points
    111
    Par défaut
    Citation Envoyé par nanooby Voir le message

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    diff -bBsr  rep1 rep2 | awk '
    	/^Files.+ are identical$/ {
               Compteur_no_diff+=1;
    	   next;
    	}
    	/^diff -bBsr.+ / {
               Compteur_diff+=1;
    	   next;
    	}
    	' Compteur_no_diff="${Compteur_no_diff}" Compteur_diff="${Compteur_diff}"

    Petite rectification, ma solution n'a de sens que si c'est pour des répertoires en mode récursif

  19. #19
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Tout d'abord, je tiens à vous remercier de vos réponses.

    Finalement, j'ai réalisé un Programme en python, grâce à une fonction que j'ai trouvé pour faire la différence entre deux fichier

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    import os
    from difflib import SequenceMatcher
     
    #Variables pour la moyenne
    compteur = 0;
    pourMoyenne = 0.00;
     
    rep1 = "repertoire1"
    rep2 = "repertoire2"
     
    rep1str = rep1.split("/")
    rep2str = rep2.split("/")
     
     
    for path, dirs, files in os.walk(rep1):
        for filename in  files :
     
            for path2, dirs2, files2 in os.walk(rep2):
                for filename2 in files2:
     
                    if filename==filename2: #Permet de voir si les deux fichiers ont le meme nom.
     
                        str = path.split("/")
                        str2 = path2.split("/")
     
                        list1=[]
                        list2=[]
     
                        i=-1;
                        #Rempli la premiere liste des dossiers dans lequel le fichier se trouve (en partant de la fin)
                        # En mettant pour condition de fin le fait que le nom du dossier soit le nom de la release
                        while (str[i]!=rep1str[-1]):
                            list1.append(str[i])
                            i=i-1
     
     
                        j=-1;
                        #Rempli la deuxieme liste des dossiers dans lequel le fichier se trouve (en partant de la fin)
                        # En mettant pour condition de fin le fait que le nom du dossier soit le nom de la release
                        while (str2[j]!=rep2str[-1]):
                            list2.append(str2[j])
                            j=j-1
     
     
                        if (list1==list2):
                            compteur=compteur+1
                            text1=os.path.join(path,filename)
                            text2=os.path.join(path2,filename2)
                            m = SequenceMatcher(None, text1, text2)
                            m.ratio()
                            pourMoyenne = pourMoyenne + m.ratio()*100
     
                            #Pour les fichiers un par un :
                            #print os.path.join(path, filename)
                            #print os.path.join(path2, filename2)
                            #print "Pourcentage de ressemblance : ", m.ratio()*100, "\n"
                            #print "---------------------------------------------------------------------------------"
     
    #Calcul de la moyenne
    moyenne= pourMoyenne/compteur
     
    #Affichage
    print " ------------------------------------------"
    print "|       Average : ", moyenne, "%         |"
    print " ------------------------------------------"

  20. #20
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Points : 19 452
    Points
    19 452
    Par défaut
    Le problème est-il résolu du coup ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [UI] [autocomplete] Requête sur fichier PHP to JSON
    Par Aoernis dans le forum jQuery
    Réponses: 3
    Dernier message: 07/06/2013, 22h03
  2. [FTP] fgets sur un fichier php donne du html
    Par Ralfman68 dans le forum Langage
    Réponses: 14
    Dernier message: 22/02/2007, 10h59
  3. [FTP] Gestion fichier PHP sur serveur FTP
    Par cdrik59 dans le forum Langage
    Réponses: 1
    Dernier message: 08/12/2006, 16h00
  4. [Système] Probleme de requette HTTP sur fichier php
    Par thenightmare1985 dans le forum Langage
    Réponses: 1
    Dernier message: 26/10/2006, 11h36
  5. explorateur fichier php sur windows 2003
    Par super-manu dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 09/02/2006, 14h42

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