Jak różnicować katalogi dla różnych plików, ale nie linia po linii


16

Chcę zobaczyć rekurencyjnie pliki, które są różne w dwóch katalogach. Diff może to zrobić, ale pokazuje mi różnice między wierszami, których nie chcę. Czy istnieje narzędzie, które to robi, lub sposób, aby to zrobić za pomocą Diff (czytałem stronę podręcznika, nic nie widziałem)?

Odpowiedzi:


29

Co powiesz na

diff -rq DIR1 DIR2

lub

diff -rqb DIR1 DIR2

-r jest rekurencyjny

-q jest w skrócie i powie ci tylko, czy pliki są różne (tzn. nie pokaże różnic linia po linii)

-b ignoruje białe znaki


1
-b ignoruje zmiany białych znaków. W przypadku krótkiej opcji użyj -q lub --brief.
Doug Harris,

Właśnie to głosowałem. Właśnie wypróbowałem tę krótką opcję po raz pierwszy. To bardzo ładne wyjście - pokazuje nie tylko, które pliki są różne, ale identyfikuje, które pliki istnieją w jednym katalogu, a nie w drugim.
Doug Harris,

Dzięki Doug; Wydaje mi się, że pierwotnie moja opcja była obrócona o 180 stopni. ;) Naprawiono teraz.
Rob

2

Szukasz -qopcji:

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

Jednym ze sposobów jest zrobienie tego

diff dir1 dir1| grep "diff "

Nadal będzie dokonywał porównania linia po linii, ale każde porównanie plików zaczyna się od „diff dir1 / file dir2 / file”, więc grep „diff” pokaże tylko te linie (tj. Pliki, które są różne).


1

Jeśli jesteś użytkownikiem emacsa, sprawdź katalogi ediff. Możesz zobaczyć różnice w plikach, a następnie przejść do różnic między wierszami, jeśli chcesz zobaczyć, dlaczego są one różne.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.