compter le nombre de différences de deux fichiers (diff...)

compter le nombre de différences de deux fichiers (diff...) - Shell/Batch - Programmation

Marsh Posté le 17-04-2008 à 13:14:14    

bonjour,
j'ai deux répertoires contenant plusieurs fichiers le tout assez long
je voudrai connaître le nombre de différences entre les deux répertoires
 
j'utilise par la suite la commande diff pour avoir un aperçu des différences, j'avais donc pensé compter le nombre de lignes renvoyées par le diff
mais, diff renvois desfois fois deux lignes pour une différence et desfois trois, donc ce n'est pas possible...
 
merci de votre aide


---------------
dam's (debianer), ma galerie Flickr
Reply

Marsh Posté le 17-04-2008 à 13:14:14   

Reply

Marsh Posté le 17-04-2008 à 16:15:40    

Une solution est peut être d'utiliser l'option -C de la commande diff.
Avec cette option chaque bloc de différences est précédé d'une ligne de douze * :
 
$ cat a1
Added line in Location 1
This is a test Script
But i am stuck.Please help
This is Added line to LOCATION 1(/root/testfolder/a)
$ cat a2
Added Line in the Location 2 (/tmp/testfolder/a)
Another line 2
This is a test Script
But i am stuck.Please help
This is added line for testing in LOCATION 2(/tmp/testfolder/a)
$ diff -C 0 a1 a2
*** a1  Wed Apr 16 14:36:41 2008
--- a2  Thu Apr 17 16:04:56 2008
***************
*** 1 ****
! Added line in Location 1
--- 1,2 ----
! Added Line in the Location 2 (/tmp/testfolder/a)
! Another line 2
***************
*** 4 ****
! This is Added line to LOCATION 1(/root/testfolder/a)
--- 5 ----
! This is added line for testing in LOCATION 2(/tmp/testfolder/a)
$ diff -C 0 a1 a2 | grep -c '^************$'
2
$
 
 
Jean-Pierre.

Reply

Marsh Posté le 18-04-2008 à 10:05:43    

Code :
  1. #/bin/sh
  2. #premiere parametre : dossier a comparer 1
  3. #deuxieme parametre : dossier a comparer 2
  4. difference="0"
  5. diff $1 $2 | (while read LINE
  6. do
  7. if [ "${LINE:0:1}" == "<" ] || [ "${LINE:0:1}" == ">" ]
  8. then
  9.  difference=$(($difference + 1))
  10. fi
  11. done
  12. echo $difference
  13. )


 
voila ce que je fais, ça ne marche pas à tout les coups quand je modifis les fichiers (genre ya une erreure de +/- 1) mais j'ai l'impression que c'est plus fiable que de compter les étoiles
enfin il faudrai certainement faire des tests plus poussés mais bon je vais voire si je trouve autre chose ou si cela me suffit
merci


Message édité par dams78 le 18-04-2008 à 10:05:59

---------------
dam's (debianer), ma galerie Flickr
Reply

Marsh Posté le 18-04-2008 à 17:32:08    

Tu peux faire plus simple :

Code :
  1. #/bin/sh
  2. #premiere parametre : dossier a comparer 1
  3. #deuxieme parametre : dossier a comparer 2
  4. difference=$(diff $1 $2 | grep -c '[<>]')
  5. echo $difference


 
Jean-Pierre

Reply

Marsh Posté le 18-04-2008 à 20:10:42    

pas mal ;)
merci


---------------
dam's (debianer), ma galerie Flickr
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed