Question Étant donné deux arborescences de répertoires, comment puis-je savoir quels fichiers diffèrent?


Si je veux trouver les différences entre deux arborescences de répertoires, je ne fais qu'exécuter:

diff -r dir1/ dir2/

Cela renvoie exactement les différences entre les fichiers correspondants. Je suis intéressé à juste obtenir une liste de fichiers correspondants dont le contenu diffère. J'ai supposé que ce serait simplement une question de passer une option de ligne de commande à diff, mais je n'ai rien trouvé sur la page de manuel.

Aucune suggestion?


563
2018-02-14 21:52


origine


Réponses:


Vous avez dit Linux, donc vous avez de la chance (au moins, il devrait être disponible, pas sûr quand il a été ajouté):

diff --brief -r dir1/ dir2/

Devrait faire ce dont vous avez besoin.

Si vous souhaitez également voir les différences pour les fichiers qui n'existent pas dans l'un ou l'autre répertoire:

diff --brief -Nr dir1/ dir2/

797
2018-02-14 21:55



La commande que j'utilise est:

diff -qr dir1/ dir2/

C'est exactement la même chose que Mark :) Mais sa réponse m'a dérangé car il utilise différents les types de drapeaux, et ça m'a fait regarder deux fois. En utilisant les drapeaux plus verbeux de Mark, ce serait:

diff  --brief --recursive dir1/ dir2/

Je m'excuse de poster quand l'autre réponse est parfaitement acceptable. Je ne pouvais pas m'arrêter ... travailler sur être moins pédant. 


244
2017-09-01 10:10



J'aime utiliser git diff --no-index dir1/ dir2/, parce qu'il peut montrer les différences de couleur (si vous avez cette option dans votre config git) et parce qu'il montre toutes les différences dans une longue sortie paginée en utilisant "moins".


74
2018-03-16 21:48



Ces deux commandes font essentiellement la chose demandée:

diff --brief --recursive --no-dereference --new-file --no-ignore-file-name-case /dir1 /dir2 > dirdiff_1.txt

rsync --recursive --delete --links --checksum --verbose --dry-run /dir1/ /dir2/ > dirdiff_2.txt

Le choix entre eux dépend de l'emplacement de dir1 et dir2:

Lorsque les répertoires résident sur deux lecteurs distincts, diff surpasse rsync. Mais lorsque les deux répertoires comparés sont sur le même lecteur, rsync est plus rapide. C'est parce que diff met une charge presque égale sur les deux répertoires en parallèle, ce qui maximise la charge sur les deux disques.

rsync calcule les sommes de contrôle en gros morceaux avant de les comparer. Cela regroupe les opérations d'E / S en gros morceaux et conduit à un traitement plus efficace lorsque les choses se déroulent sur un seul disque.


22
2017-12-06 01:49



Meld est aussi un excellent outil pour comparer deux répertoires:

meld dir1/ dir2/

Meld a beaucoup d'options pour comparer des fichiers ou des répertoires. Si deux fichiers diffèrent, il est facile d'entrer en mode de comparaison de fichiers et de voir les différences exactes.


10
2018-02-09 11:03



Manche compatriote 'billings' (de freenode / # centos fame) a partagé sa méthode avec moi:

diff -Naur dir1/ dir2

Y compris la barre oblique finale du répertoire n'a pas d'importance.

En outre, il semble que -u option n'est pas disponible sur certaines versions plus anciennes / serveur de diff.

La différence en diffs:

# diff -Nar /tmp/dir1 /tmp/dir2/
diff -Nar /tmp/dir1/file /tmp/dir2/file
28a29
> TEST

# diff -qr /tmp/dir1/ /tmp/dir2/
Files /tmp/dir1/file and /tmp/dir2/file differ

7
2017-09-18 14:57



Diffuseur est un excellent outil de comparaison de répertoire basé sur la ligne de commande.

J'aime particulièrement à ce sujet qu'il peut diff dans des dossiers:

Il décomposera récursivement les archives de plusieurs types et transformera divers formats binaires en une forme plus lisible pour les comparer. Il peut comparer deux tarballs, images ISO ou PDF aussi facilement.

Non seulement vous dire quels fichiers diffèrent, mais aussi comment ils diffèrent.


3
2018-06-14 15:56