Comment différencier les répertoires de différents fichiers, mais pas ligne par ligne

16

Je veux voir, récursivement, des fichiers différents dans deux répertoires. Diff peut le faire, mais cela me montre les différences ligne par ligne, ce que je ne veux pas. Existe-t-il un outil qui fait cela, ou un moyen de le faire avec Diff (j'ai lu la page de manuel, je n'ai rien vu)?

user13743
la source

Réponses:

29

Qu'en est-il de

diff -rq DIR1 DIR2

ou

diff -rqb DIR1 DIR2

-r est récursif

-q est pour bref, et vous dira simplement si les fichiers sont différents (c'est-à-dire, il ne montrera pas les différences ligne par ligne)

-b ignore les espaces blancs

Rob
la source
1
-b ignore les changements d'espace blanc. Utilisez -q ou --brief pour l'option brève.
Doug Harris
Et je viens de voter pour cela. J'ai juste essayé la brève option pour la première fois. C'est une sortie très agréable - montre non seulement quels fichiers sont différents, mais identifie quels fichiers existent dans un répertoire et pas dans l'autre.
Doug Harris
Merci Doug; Je suppose que j'avais à l'origine fait pivoter mon option de 180 degrés. ;) Corrigé maintenant.
voler
2

Vous recherchez l' -qoption:

dlamblin$ diff -r a b
diff -r a/a b/a
0a1,2
> 
> 
Only in b: b
dlamblin$ diff -qr a b
Files a/a and b/a differ
Only in b: b
dlamblin
la source
1

Une façon de le faire est de faire

diff dir1 dir1| grep "diff "

Il fera toujours une comparaison ligne par ligne, mais chaque comparaison de fichiers commence par "diff dir1 / file dir2 / file", donc "diff" ne montrera que ces lignes (c'est-à-dire les fichiers qui sont différents).

user13743
la source
1

Si vous êtes un utilisateur emacs, consultez les répertoires ediff. Vous pouvez voir les différences de fichier, puis explorer les différences ligne par ligne si vous avez besoin de voir pourquoi elles sont différentes.

Doug Harris
la source