Comment puis-je comparer de manière récursive 2 dossiers avec la même structure.
En utilisant diff
ou git diff
à partir de la ligne de commande bash
?
Réponses
Trop de publicités?Pour comparer 2 fichiers, nous utilisons la commande diff. Comment comparer 2 répertoires ? Plus précisément, nous voulons savoir quels fichiers/sous-répertoires sont communs, ceux qui sont uniquement dans un répertoire mais pas dans l'autre
diff dir1 dir2
Si vous n'êtes pas intéressé par les différences de fichiers, utilisez
diff -q dir1 dir2 | sort
diff trie sa sortie par ordre alphabétique selon le nom du fichier/sous-répertoire. Je préfère les regrouper en fonction de leur commune présence, et de savoir s'ils existent uniquement dans le premier ou le second répertoire. C'est pourquoi j'ai utilisé la commande sort après diff dans la commande ci-dessus.
Remarquez que par défaut, diff n'analyse pas les sous-répertoires pour comparer les fichiers et sous-répertoires à ce niveau. Pour changer son comportement et parcourir récursivement les sous-répertoires, ajoutez -r.
diff -qr dir1 dir2 | sort
J'espère que cela vous aide.
Mon préféré pour un coup d'oeil rapide :
diff -Ewburq dossier1/ dossier2/
Listez les noms de fichiers (en ignorant tous les types de changements d'espaces).
Pour voir toute la différence dans un visualiseur agréable (en supprimant l'option -q
)
diff -Ewbur dossier1/ dossier2/ | kompare -o -
Vous pourriez probablement trouver d'autres (meilleurs ?) outils de différenciation (meld, k3diff etc. ?)
Si vous le souhaitez, vous pouvez inclure les fichiers 'new' dans l'ensemble avec -N