Narzędzie do porównywania plików i katalogów?


149

Szukam czegoś, co porówna katalogi i pliki, tak jak Beyond Compare dla Windows.

Służy głównie do kontroli źródła, ale muszę go również użyć do wdrożenia.


Czy chcesz tylko listę plików lub rzeczywistą zawartość każdego pliku?
Martin Ueding,

Chcę listę plików i, jeśli to możliwe, inną zawartość między plikami o tej samej ścieżce.
isoman

2
Przydałoby się, jeśli narzędzie GUI pozwala ukryć identyczne foldery i pliki . To znacznie ułatwiłoby skoncentrowanie się na nieparzystych folderach i plikach. Czy ktoś zna narzędzie, które obsługuje tę funkcję?
JJD

Spójrz na unisono . Beyond Compare stosuje podejście „wszystko w jednym miejscu - wszystko to”, podczas gdy unison koncentruje się na obsłudze przechodzenia przez drzewa, utrzymywaniu stanu i propagowaniu zmian, obejmując funkcje Beyond Compare , delegując takie rzeczy, jak różnicowanie, łączenie 3-kierunkowe itp. Do czegokolwiek, co jest twoje ulubiony program działający na poziomie plików. Unison to darmowe, bardzo solidne i dojrzałe oprogramowanie, które może szybko wykrywać i synchronizować ogromne drzewa, poprzez sieć między różnymi systemami operacyjnymi itp. Najpierw przeczytaj dokument, zwłaszcza w systemie Windows.
Stéphane Gourichon

emacs ma narzędzie do porównywania katalogów. Jak wszystko, co emacs, eye candy jest, no cóż, „co to znaczy eye candy”, ale pokazuje kontekstową pomoc z klawiszami, pozwala kilkoma naciśnięciami klawiszy na rekurencyjną analizę, ukrywanie identycznych plików lub nawet podkatalogów, interaktywne wybieranie plików, aby pokazać kolor -kodowane różnice z różnymi opcjami, interaktywnie łączą, propagują lub wykonują dowolne edycje plików, łatwo przechodzą do następnego pliku lub katalogu, śledząc stan, ze wszystkimi zwykłymi funkcjami edycji.
Stéphane Gourichon

Odpowiedzi:


175

Meldzainstaluj meld

Meld to narzędzie, które może porównywać i scalać pliki i katalogi. Jest to GUI analogiczny do narzędzi standardowych diff zainstaluj diffutilsi patch zainstaluj łatkęwiersza poleceń. (Zobacz man diff i man patch, aby uzyskać więcej informacji na ich temat)

wprowadź opis zdjęcia tutaj

Ponadto wiele systemów kontroli źródła (takich jak bzr zainstaluj bzr-gtklub git zainstaluj git) ma możliwość tworzenia różnic między wersjami.


2
Meld jest NIESAMOWITY. Używam go jako różnicy kontroli źródła.
Matt Joiner

12
Właśnie wypróbowałem większy folder - 4 GB, 2000 plików. Funkcjonalność stopu jest zgodna z oczekiwaniami. Ale dla tego folderu połączenie jest bardzo wolne, a interfejs użytkownika nie odpowiada (bloki). Teraz korzystam z rsync.
geekQ

1
Świetnie sprawdza się również przy porównywaniu plików tekstowych obok siebie, a nawet kopiowaniu i wklejaniu. Najlepszy interfejs, jaki widziałem!
Stefan Rogin

@geekQ jako szybka alternatywa, która może obsłużyć tak duży folder, jak chcesz, natychmiast, patrz beyond compareponiżej. przełożony nad meld
imho

Meld ulega awarii za każdym razem, gdy chcę wybrać folder: / Mam najnowszą wersję dostępną w moim repozytorium dystrybucji (Ubuntu 14.04)
Youda008

44

Diff jest twoim przyjacielem.

diff -ur path1 path2

Spowoduje to porównanie wszystkich plików wspólnych dla ścieżki 1 i ścieżki 2.

Jeśli zmienisz -urna -urN, wyświetli to także zawartość plików obecnych tylko w jednej ze ścieżek.


1
Zainstalowany colordiffi używanycolordiff -ur path1 path2
warvariuc

Nie działa w cygwin.
Tomáš Zato


13

Użyj diffpolecenia:

diff -u file1 file2

diff -uwybiera format z kilkoma liniami kontekstu. Zwykły diff file1 file2wyświetla tylko różne linie. Istnieje wiele innych opcji sterowania formatem wyjściowym, ignorowania różnic tylko białych znaków itp.

Jeśli chcesz zapisać wynik w pliku, przekieruj go:

diff -u file1 file2 >file1-file2.diff

12

Dowódca gnomezainstaluj Gnome Commander

Interfejs może nie być naprawdę seksowny, ale jest niezwykle potężny!

alternatywny tekst

A jeśli byłeś przyzwyczajony do innego * dowódcy (takiego jak Norton lub podobni), nie zgubisz się.


1
Nie użyłem go do porównania 2 plików, ale użyłem go, aby powiedzieć mi, które pliki były inne podczas porównywania z katalogami. Jest to szczególnie przydatne podczas sortowania zdjęć ;-)
Huygens

10

Narzędzia wiersza poleceń

Inspirowany tym wpisem na blogu .

różn

Lista różnych plików:

diff -qr folder1 folder2

Wyświetlanie również treści:

diff -Naur folder1 folder2

rsync

Jeśli dwa katalogi nie znajdują się na tym samym komputerze, rsyncmoże to być najłatwiejsze rozwiązanie. Zwykle rsyncjest używany do synchronizacji katalogów, ale możesz go uruchomić w trybie pełnym i suchym, więc wyświetli tylko te pliki, które musiałby zmienić.

rsync -rvnc --delete folder1 server:/path/to/folder2

Możesz pominąć, cjeśli chcesz porównać pliki na podstawie znaczników czasu i rozmiarów plików, aby przyspieszyć wszystko:

rsync -rvn --delete folder1 server:/path/to/folder2

9

Krusaderzainstaluj krusader

Krusader to bezpłatne narzędzie (dostępne w Centrum oprogramowania), które pokazuje zawartość folderów w porównaniu i możesz synchronizować z wieloma różnymi opcjami. Możesz filtrować podczas synchronizacji i porównywania.

Krusader

Aby porównać zawartość pliku, po prostu zaznacz dwa pliki, wybierz „plik”> „porównaj zawartość” i będą one porównywane litera po literze. domyślnym narzędziem porównywania używanym przez krusader jest domyślne narzędzie KDE „ Kompare ”. Możesz ustawić krusader, aby używał dowolnego innego narzędzia porównywania - jak na przykład jedno z powyższych.

To najbardziej kompletne rozwiązanie, jakie kiedykolwiek znalazłem i jest bardzo wygodne. I obsługuje wszystkie klawisze funkcyjne używane przez dowódcę północy (składnia północnego dowódcy).


Możesz także użyć „Narzędzia -> Synchronizuj katalogi”, aby uzyskać widok zmian plików rekurencyjnych dwóch paneli katalogów.
Angelos Pikoulas

niestety nie zachowano synchronizatora w krusaderze : bugs.kde.org/show_bug.cgi?id=270150#c7 . Czy istnieje alternatywa, która jest aktywnie utrzymywana?
rubo77

1
@ rubo77: w międzyczasie naprawiono ten błąd.
mivk 28.08.18

9

KDiff3 zainstaluj kdiff3

Jest to graficzny interfejs dla użytkowników KDE (lub jeśli nie masz nic przeciwko korzystaniu z aplikacji Qt).

kdiff3

Istnieje również dirdiff zainstaluj dirdiff dla katalogów.



4

Unison to narzędzie do szybkiej synchronizacji plików, które wykorzystuje algorytm rsync i umożliwia podgląd różnic przed aktualizacją między dwiema lokalizacjami, zarówno zdalnymi, jak i lokalnymi.


4

Dowiedziałem się o hashdeep dwa tygodnie temu. I ma kilka silnych zalet:

  • W przeciwieństwie do meldtego działa dobrze w przypadku bardzo dużych folderów. Gdy meldstaje się bardzo wolny, a interfejs nie odpowiada (zablokowany), funkcja mieszania działa tylko ze stałą prędkością
  • W przeciwieństwie do rsynchaszowania wykrywa przeniesione pliki - pliki o tej samej zawartości, tylko w innym katalogu.

Pełne wyjście wygląda następująco:

...
foo/bar.txt: Known file not used
x/foo/M0824_2L.JPG: Moved from y/P1010998.JPG

hashdeep: Audit failed
   Input files examined: 0
  Known files expecting: 0
          Files matched: 6233
Files partially matched: 0
            Files moved: 3695
        New files found: 19257
  Known files not found: 4713

4

Dobrym sposobem na porównanie jest użycie „ znajdź ” z „ md5sum ”, a następnie „ diff ”.

Przykład:

Użyj find, aby wyświetlić listę wszystkich plików w katalogu, a następnie obliczyć skrót md5 dla każdego pliku i potokować go do pliku:

$find /dir1/ -type f -exec md5sum {} \; > dir1.txt

Wykonaj tę samą procedurę w innym katalogu:

$find /dir2/ -type f -exec md5sum {} \; > dir2.txt

Następnie porównaj wynik dwóch plików z „diff”:

$diff dir1.txt dir2.txt

Ta strategia jest bardzo przydatna, gdy dwa katalogi, które mają być porównywane, nie znajdują się na tym samym komputerze i musisz upewnić się, że pliki są równe w obu katalogach.

Innym dobrym sposobem na wykonanie tej pracy jest użycie git

git diff --no-index dir1/ dir2/

Z poważaniem!


3

Wypróbuj również FreeFileSync . Ma przyzwoity interfejs, akceptowalną szybkość porównywania, dobre filtrowanie wyniku porównania, różne sposoby synchronizacji. Jest wyposażony w narzędzie do monitorowania folderów (RealTimeSync), które może uruchomić FreeFileSync (właściwie dowolne polecenie lub skrypt) po zmianie tego określonego folderu (lub folderów) lub plików w nim zawartych. Naprawdę warto spróbować.

Więcej informacji o tym tutaj lub tutaj , gdzie masz PPA , zbyt

Z ich strony najważniejsze funkcje:

Porównaj pliki (według daty lub daty) i zsynchronizuj je.

Bez ograniczeń: dowolna liczba plików może być synchronizowana.

Obsługa Unicode.

Wsparcie sieciowe.

Wbudowana obsługa bardzo długich nazw plików (więcej niż MAX_PATH = 260 znaków).

Synchronizacyjna baza danych do propagacji usuniętych plików i wykrywania konfliktów

Obsługa wielu par folderów z odrębną konfiguracją

Pełna obsługa dowiązań symbolicznych systemu Windows / Linux i punktów połączenia systemu Windows.

Prosty i łatwo dostępny interfejs użytkownika: wysoce zoptymalizowany pod kątem szybkości i ogromnych zestawów danych.

Algorytmy całkowicie zakodowane w C ++.

Wszystkie wskaźniki postępu zoptymalizowane pod kątem maksymalnej wydajności!

Utwórz zadania wsadowe do automatycznej synchronizacji z graficznym interfejsem użytkownika lub bez niego.

Nacisk na użyteczność:

Tylko niezbędna funkcjonalność w interfejsie użytkownika: brak przeciążonych menu lub dżungli ikon.

Wybierz wszystkie foldery za pomocą przeciągania i upuszczania.

Ostatnio używana konfiguracja i ustawienia ekranu są zapisywane automatycznie.

Zachowaj i ładuj różne konfiguracje, przeciągając i upuszczając, przycisk ładowania lub wiersz poleceń.

Kliknij dwukrotnie, aby uruchomić zewnętrzną aplikację (np. Pokaż plik w Eksploratorze Windows)

Skopiuj i wklej wszystkie dane siatki jako tekst

Usuń zbędne / tymczasowe pliki bezpośrednio z głównej siatki.

Kliknij menu kontekstowe prawym przyciskiem myszy.

Kompleksowe informacje o stanie i raportowanie błędów

Sortuj listy plików według nazwy, rozmiaru lub daty.

Obsługa plików większych niż 4 GB.

Opcja przeniesienia plików do Kosza zamiast ich usuwania / zastępowania.

Ignoruj ​​katalogi „\ RECYCLER” i „\ System Volume Information” z domyślnym filtrem. (Tylko Windows)

Zlokalizowane wersje są dostępne dla wielu języków.

Usuń przed kopiowaniem: unikaj niedoborów miejsca na dysku dla dużych zadań synchronizacji.

Filtruj funkcje, aby uwzględnić / wykluczyć pliki z synchronizacji (bez konieczności ponownego porównywania!).

Tymczasowo włącz / wyłącz określone pliki z synchronizacji.

Automatycznie obsługuj zmiany czasu letniego w woluminach FAT / FAT32.

Dostępna wersja przenośna (wybierana przez instalatora).

Natywna wersja 64-bitowa.

Sprawdź aktualizacje automatycznie z poziomu FreeFileSync.

Skopiuj zablokowane pliki za pomocą Windows Copy Shadow Copy Service. (Tylko Windows)

Twórz regularne kopie zapasowe za pomocą makr% time%,% date% w nazwach katalogów

Skopiuj czasy tworzenia / dostępu / modyfikacji plików i folderów podczas synchronizacji

Zaawansowana strategia blokowania pozwalająca na wiele procesów synchronizacji (np. Wielu pisarzy, ten sam udział sieciowy)

Dodałbym, że może zarządzać usuniętymi plikami, przenosząc je do Kosza lub folderu określonego przez użytkownika. Aby wskazać wadę: dokumentacja programu koncentruje się dość dużo na systemie Windows, mniej na Linuksie. Ale ładnie działa.


3

Możesz użyć rozproszonego:

sudo apt-get install diffuse
diffuse file1 file2

2
Często używam Diffuse dla jednej funkcji zabójcy - możliwości ręcznego ustawiania kotwic scalających. Nie robi jeszcze katalogów (jeszcze), ale dla pojedynczych i niechlujnych różnic funkcja kotwicy jest niesamowita.
Sk606,


1

Eclipse IDE jest trochę ciężki, jeśli robisz tylko porównania, ale dobrze sobie z tym radzi, między innymi. Możesz wybrać 2 projekty, ścieżki lub pliki i porównać je ze sobą, a także zsynchronizować z serwerami kontroli źródła.


1

IMHO FreeFileSync jest bardzo dobry i bardziej przydatny niż Meld. Jest szybki i stabilny, może przeprowadzać synchronizacje o dużych kosztach, a także eksportować wyniki porównania do pliku csv.

Łącze Lanchpad



0

Aby porównać pliki

File_1.txt
Line1
Line2

File_2.txt
Line1
Line 2

Możesz użyć polecenia cmp:

cmp -b "File_1.txt" "File_2.txt"

wyjście byłoby

a b differ: byte 11, line 2 is  62 2  40  

Aby porównać katalog (twoja potrzeba):

możesz użyć polecenia diff :

diff -r --brief dir1 dir2

man diff

  -r, --recursive
              recursively compare any subdirectories found

   -q, --brief
          report only when files differ
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.