Comparer deux dossiers
Par Nicofo le dimanche 1 juillet 2007, 12:16 - Linux - Lien permanent
12/12/2008 - Version 2 disponibleVoici un petit script qui vous permet de lister les différences entre le contenu de deux dossiers : compDossier.
Et à quoi ça peut servir ? Un simple exemple : vous avez un CD avec les sauvegardes des photos du PC. Comment savoir quelles sont les nouvelles photos qui n'ont pas encore été gravées sur le CD ? »
compDossier !
$ compDossier /media/Sauvegardes_Photos ~/Images Ce que "/media/Sauvegardes_Photos/" contient en plus : img22.jpg Ce que "/home/nicolas/Images/" contient en plus : 2007/img_new1.jpg 2007/img_new2.jpg
Télécharger le script : compDossier.
À voir aussi : Comparer deux dossiers (Version 2)
Commentaires
Existe-t-il la même chose pour comparer, sous Linux, 2 fichiers textes ?
Je connais examdiff sous windows, mais n'est pas encore trouvé d'équivalent sous Linux...
daria : diff
Tout simplement, la ligne de commande !

Merci beaucoup Yannick
>daria
sinon y a kompare en graphique
Ou sinon "meld" en graphique aussi
Moi, je vous conseille : kdiff3.sourceforge.net/
C'est un excellent outil.
Hello.
Un bon p'tit script en ligne de commande comme j'aime ... merci ! : )
@+....
Merci ce script vient de me servir
Merci aussi pour ce script qui vient de me servir
Juste une remarque : comme le résultat était très grand, j'ai envoyé la sortie dans un fichier
et j'ai remarqué des caractères bizarres [1;34m et[0m autour des phrases "Ce que [...] contient en plus :"
par la suite et par hasard j'apprends que ce sont des caractères pour colorer le résultat dans la console
il faudrait ne pas colorer le résultat en cas de sortie détournée
Tu devines comment faire ? Dans les dernières lignes du script - commandes "echo" - tu peux supprimer les "\033[1;34m".
L'avantage des scripts est que c'est facilement modifiable
tu as oublié un ! sur la première ligne
ce qui la rend inutile, et je pense que du coup bash s'occupe du script
(car si on met #!/bin/sh on voit des -e non interprétés par echo de sh)
il faut mettre #!/bin/bash au lieu de #/bin/sh
nouvelle fonction : indiquer combien de fichiers ont été trouvés
la dernière section devient
#comparer
DIR1nb=$(wc -l $file1 | cut -d' ' -f1)
DIR1nb=$(echo "$DIR1nb-1" | bc)
echo -e "Les $DIR1nb dossiers ou fichiers en plus dans \"$DIR1\" :"
diff $file1 $file2 |grep '^<'|cut -d' ' -f1 --complement
DIR2nb=$(wc -l $file2 | cut -d' ' -f1)
DIR2nb=$(echo "$DIR2nb-1" | bc)
echo -e "\nLes $DIR2nb dossiers ou fichiers en plus dans \"$DIR2\" :"
diff $file2 $file1 |grep '^<'|cut -d' ' -f1 --complement
Salut,
c'est vrai, il manque le "!", néanmoins, j'ai essayé avec et sans le "!", en mettant /bin/sh ou /bin/bash => dans tous les cas ça fonctionne (correctement) de la même façon.
Ta nouvelle fonction est bien, mais elle ne fait que compter le nombre d'éléments de chaque dossier, et non le nombre de différences ou fichiers en plus comme tu l'indiques.