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)?

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


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

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).


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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.