So unterscheiden Sie Verzeichnisse für verschiedene Dateien, jedoch nicht zeilenweise

16

Ich möchte rekursiv Dateien sehen, die sich in zwei Verzeichnissen unterscheiden. Diff kann das, aber es zeigt mir die zeilenweisen Unterschiede, die ich nicht will. Gibt es ein Tool, das dies tut, oder eine Möglichkeit, dies mit Diff zu tun (Ich habe die Manpage gelesen, ich habe nichts gesehen)?

user13743
quelle

Antworten:

29

Wie wäre es mit

diff -rq DIR1 DIR2

oder

diff -rqb DIR1 DIR2

-r ist rekursiv

-q ist eine Kurzform und gibt nur an, ob die Dateien unterschiedlich sind (dh es werden keine zeilenweisen Unterschiede angezeigt).

-b ignoriert Leerzeichen

rauben
quelle
1
-b ignoriert Leerraumänderungen. Verwenden Sie -q oder --brief für die kurze Option.
Doug Harris
Und ich habe das gerade positiv bewertet. Ich habe gerade die kurze Option zum ersten Mal ausprobiert. Es ist eine sehr schöne Ausgabe - zeigt nicht nur, welche Dateien unterschiedlich sind, sondern identifiziert, welche Dateien in einem Verzeichnis existieren und nicht in dem anderen.
Doug Harris
Danke Doug; Ich glaube, ich hatte ursprünglich meine Option um 180 Grad gedreht. ;) Jetzt behoben.
Rob
2

Sie suchen die -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
quelle
1

Eine Möglichkeit, dies zu tun, besteht darin, dies zu tun

diff dir1 dir1| grep "diff "

Es wird immer noch ein zeilenweiser Vergleich durchgeführt, aber jeder Dateivergleich beginnt mit "diff dir1 / file dir2 / file". Wenn Sie also auf "diff" klicken, werden nur die Zeilen angezeigt (dh die Dateien, die unterschiedlich sind).

user13743
quelle
1

Wenn Sie ein Emacs-Benutzer sind, lesen Sie die ediff-Verzeichnisse. Sie können die Dateiunterschiede anzeigen und dann zeilenweise nach Unterschieden suchen, wenn Sie wissen möchten, warum sie unterschiedlich sind.

Doug Harris
quelle