Comparer les fichiers de 2 dossiers
On a parfois des dossiers avec des contenus similaires et l’on a besoin
de comparer les fichiers.
Deux commandes qui permettent de réaliser cette comparaison.
Avec la commande diff
Il faut utiliser l’option -r pour récursif.
Si on fait diff -r dossier1 dossier2 on obtient :
- rien si les fichiers sont identiques
2076 $ diff -r dossier1 dossier2
- la liste des différences
2080 $ diff -r dossier1 dossier2
diff -r dossier1/titi.txt dossier2/titi.txt
1d0
< BBBBB
diff -r dossier1/toto.txt dossier2/toto.txt
1d0
< AAAAA
Si on rajoute l’option -q alors on obtient uniquement la liste des
fichiers :
diff -qr dossier1 dossier2
Les fichiers dossier1/titi.txt et dossier2/titi.txt sont différents
Les fichiers dossier1/toto.txt et dossier2/toto.txt sont différents
Avec la commande find
La commande find permet de rechercher des fichiers dans une
arborescence. En précisant le type la recherche se fera uniquement sur
des fichiers.
Pour afficher la liste des fichiers en excluant le nom des dossiers :
find dossier1 -type f
./dossier1/toto.txt
./dossier1/titi.txt
L’option -exec de la commande find permet d’appliquer une commande
sur chacun des fichiers trouvés ; on peut calculer la somme de contrôle
de chacun des fichiers.
Depuis le répertoire dossier1 :
find . -type f -exec md5sum {} \;
13376f69f75e938a0fa834f24cc3dd7a ./toto.txt
4516710ae4ccb5ffd315125aabbbcd2d ./titi.txt
En redirigeant le résultat des sommes de contrôle dans un fichier on
peut ensuite contrôler le contenu de l’autre répertoire dossier2 :
md5sum -c ../md5.txt
./toto.txt: Réussi
./titi.txt: Échec
md5sum: Attention : 1 somme de contrôle ne correspond pas
Saint Carré