Datei- und Verzeichnisvergleichstool?


149

Ich suche nach etwas, das Verzeichnisse und Dateien vergleicht, wie es Beyond Compare für Windows tut.

Es ist hauptsächlich für die Quellcodeverwaltung gedacht, aber ich muss es auch für die Bereitstellung verwenden.


Möchten Sie nur die Dateiliste oder den tatsächlichen Inhalt jeder Datei?
Martin Ueding

Ich möchte die Dateiliste und möglichst die unterschiedlichen Inhalte zwischen Dateien mit gleichem Pfad.
isoman

2
Es wäre praktisch , wenn das GUI - Tool ermöglicht es Ordner und Dateien versteckt , die identisch sind . Dies würde es viel einfacher machen, sich auf die ungeraden Ordner und Dateien zu konzentrieren. Kennt jemand ein Tool, das diese Funktion unterstützt?
JJD

Schauen Sie sich unisono an . Beyond Compare erledigt alles aus einer Hand, während Unisono sich darauf konzentriert, das Überqueren von Bäumen zu handhaben, den Status beizubehalten und Änderungen zu verbreiten, und Beyond Compare-Funktionen durch Delegieren von Dingen wie Diff, 3-Wege-Zusammenführung usw. an alles, was Ihnen gehört , abdeckt Lieblingsprogramm auf Dateiebene. Unison ist eine kostenlose, sehr robuste und ausgereifte Software, mit der riesige Bäume schnell erkannt und synchronisiert werden können. Lesen Sie zuerst das Dokument, insbesondere unter Windows.
Stéphane Gourichon

emacs hat ein Tool zum Vergleichen von Verzeichnissen. Wie alles in Emacs ist auch die Augenweide "Was bedeutet Augenweide überhaupt?", Zeigt jedoch kontextbezogene Hilfe mit Schlüsseln an, ermöglicht mit wenigen Tastendrücken eine rekursive Analyse, das Ausblenden identischer Dateien oder sogar Unterverzeichnisse und die interaktive Auswahl von Dateien zum Anzeigen von Farben -codierte Unterschiede mit verschiedenen Optionen, interaktives Zusammenführen, Weitergeben oder Ausführen beliebiger Änderungen an Dateien, einfaches Wechseln zur nächsten Datei oder zum nächsten Verzeichnis, Verfolgung des Status mit allen üblichen Bearbeitungsfunktionen.
Stéphane Gourichon

Antworten:


175

Meldmeld installieren

Meld ist ein Tool zum Vergleichen und Zusammenführen von Dateien und Verzeichnissen. Es ist eine GUI analog zu den Standard- diff Installieren Sie diffutilsund patch Patch installierenBefehlszeilentools. (Siehe man diff und man patch für mehr Details dazu)

Bildbeschreibung hier eingeben

Viele Quellcodeverwaltungssysteme (wie z. B. bzr Installieren Sie bzr-gtkoder git Installieren Sie Git) können auch Unterschiede zwischen Versionen erstellen.


2
Meld ist unglaublich. Ich benutze es als Versionskontrolldifferenz.
Matt Joiner

12
Gerade auf einem größeren Ordner ausprobiert - 4 GB, 2000 Dateien. Die Funktionalität der Meldung ist beliebig. Aber für diesen Ordner ist die Meldung extrem langsam und die Benutzeroberfläche reagiert nicht (blockiert). Verwenden Sie jetzt rsync.
GeekQ

1
Funktioniert auch hervorragend beim Vergleichen von Textdateien nebeneinander oder sogar beim Kopieren und Einfügen. Beste Schnittstelle, die ich gesehen habe!
Stefan Rogin

@geekQ als schnelle Alternative, die in der Lage ist, einen Ordner so groß wie Sie möchten, siehe beyond compareunten. überlegen imho meld
phil294

Meld stürzt jedes Mal ab, wenn ich einen Ordner auswählen möchte: / Ich habe die neueste Version in meinem Distributions-Repository (Ubuntu 14.04)
Youda008

44

Diff ist dein Freund.

diff -ur path1 path2

Dadurch werden alle Dateien verglichen, die zwischen Pfad1 und Pfad2 identisch sind.

Wenn Sie ändern , -urum -urNdann wird zeigen , dass auch den Inhalt von Dateien , die nur in einem der Wege sind.


1
Installiert colordiffund benutztcolordiff -ur path1 path2
warvariuc

Funktioniert nicht in Cygwin.
Tomáš Zato


13

Verwenden Sie den diffBefehl:

diff -u file1 file2

diff -uWählt ein Format mit wenigen Kontextzeilen aus. Eine Ebene diff file1 file2listet nur die unterschiedlichen Zeilen auf. Es gibt viele weitere Optionen zum Steuern des Ausgabeformats, zum Ignorieren von Nur-Leerzeichen-Unterschieden usw.

Wenn Sie die Ausgabe in eine Datei schreiben möchten, leiten Sie sie um:

diff -u file1 file2 >file1-file2.diff

12

Gnome CommanderInstallieren Sie Gnome Commander

Das Interface ist vielleicht nicht wirklich sexy, aber es ist extrem mächtig!

Alt-Text

Und wenn Sie an andere * Commander (wie Norton oder ähnliche) gewöhnt wären, wären Sie nicht verloren.


1
Ich habe es nicht zum Vergleichen von 2 Dateien verwendet, aber ich habe es verwendet, um mir mitzuteilen, welche Dateien beim Vergleich mit Verzeichnissen unterschiedlich waren. Dies ist besonders nützlich beim Sortieren von Fotos ;-)
Huygens

10

Befehlszeilen-Tools

Inspiriert von diesem Blogeintrag .

diff

Verschiedene Dateien auflisten:

diff -qr folder1 folder2

Auflistung auch Inhalt:

diff -Naur folder1 folder2

rsync

Wenn sich die beiden Verzeichnisse nicht auf demselben Computer befinden, ist dies rsyncmöglicherweise die einfachste Lösung. Wird normalerweise rsynczum Synchronisieren von Verzeichnissen verwendet. Sie können es jedoch im ausführlichen und im trockenen Modus ausführen, sodass nur die Dateien aufgelistet werden, die geändert werden müssten.

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

Sie können aufgeben, cwenn Sie Dateien basierend auf Zeitstempeln und Dateigrößen vergleichen möchten, um alles zu beschleunigen:

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

9

Krusaderinstalliere krusader

Krusader ist ein kostenloses Tool (im Software Center verfügbar), das Ordnerinhalte im Vergleich anzeigt und mit vielen verschiedenen Optionen synchronisiert werden kann. Sie können beim Synchronisieren und Vergleichen filtern.

Krusader

Um den Inhalt einer Datei zu vergleichen, markieren Sie einfach zwei Dateien. Wählen Sie "Datei"> "Inhalt vergleichen" und sie werden Buchstabe für Buchstabe verglichen. Das von krusader verwendete Standard-Vergleichstool ist das Standard-KDE-Tool " Kompare ". Sie können krusader so einstellen, dass jedes andere Vergleichstool verwendet wird - wie zum Beispiel eines der oben genannten.

Dies ist die umfassendste Lösung, die ich je gefunden habe und sie ist sehr praktisch. Und es unterstützt alle vom Midnight Commander verwendeten Funktionstasten (Norton Commander-Syntax).


Sie können auch "Extras -> Verzeichnisse synchronisieren" verwenden, um eine Ansicht mit rekursiven Dateiänderungen der beiden Verzeichnisfenster zu erhalten.
Angelos Pikoulas

Leider ist der Synchronizer in krusader nicht gewartet: bugs.kde.org/show_bug.cgi?id=270150#c7 . Gibt es eine Alternative, die aktiv gepflegt wird?
Rubo77

1
@ rubo77: Dieser Fehler wurde in der Zwischenzeit behoben.
mivk

9

KDiff3 Installiere kdiff3

Es ist ein grafisches Front-End für KDE-Benutzer (oder wenn es Ihnen nichts ausmacht, Qt-Apps zu verwenden).

kdiff3

Es gibt auch ein installiere dirdiff Verzeichnisverzeichnis.



4

Unison ist ein schnelles Dateisynchronisierungstool, das den rsync-Algorithmus verwendet und es Ihnen ermöglicht, eine Vorschau der Unterschiede anzuzeigen, bevor Sie zwischen zwei Standorten aktualisieren, sei es remote oder lokal.


4

Ich habe vor zwei Wochen etwas über Haschisch gelernt . Und es hat einige starke Vorteile:

  • Im Gegensatz dazu meldfunktioniert es gut für sehr große Ordner. Wenn melddie Benutzeroberfläche extrem langsam wird und nicht mehr reagiert (blockiert), arbeitet der Hash-Vorgang nur mit einer konstanten Geschwindigkeit
  • Im Gegensatz dazu rsyncerkennt hashdeep verschobene Dateien - Dateien mit demselben Inhalt, nur in einem anderen Verzeichnis.

Ausführliche Ausgabe ist wie folgt:

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

Ein guter Weg, um diesen Vergleich durchzuführen , ist die Verwendung von " find " mit " md5sum ", dann einem " diff ".

Beispiel:

Verwenden Sie find, um alle Dateien im Verzeichnis aufzulisten. Berechnen Sie dann den MD5-Hash für jede Datei und leiten Sie ihn an eine Datei weiter:

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

Gehen Sie in einem anderen Verzeichnis genauso vor:

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

Dann vergleiche das Ergebnis zweier Dateien mit "diff":

$diff dir1.txt dir2.txt

Diese Strategie ist sehr nützlich, wenn sich die beiden zu vergleichenden Verzeichnisse nicht auf demselben Computer befinden und Sie sicherstellen müssen, dass die Dateien in beiden Verzeichnissen gleich sind.

Ein weiterer guter Weg, die Arbeit zu erledigen, ist die Verwendung von Git

git diff --no-index dir1/ dir2/

Freundliche Grüße!


3

Versuchen Sie auch FreeFileSync . Es hat eine anständige Schnittstelle, akzeptable Vergleichsgeschwindigkeit, gute Filterung des Vergleichsergebnisses, verschiedene Arten der Syncrhronisierung. Es wird mit einem Ordnerüberwachungstool (RealTimeSync) ausgeliefert, mit dem FreeFileSync (eigentlich jeder Befehl oder jedes Skript) gestartet werden kann, wenn dieser bestimmte Ordner oder die darin enthaltenen Dateien geändert werden. Wirklich einen Versuch wert.

Mehr Infos über sie hier oder hier , wo Sie eine haben PPA auch

Von ihrer Seite, die wichtigsten Funktionen:

Vergleichen Sie Dateien (nach Datum oder nach Uhrzeit) und synchronisieren Sie sie.

Keine Einschränkungen: Es können beliebig viele Dateien synchronisiert werden.

Unicode-Unterstützung.

Netzwerkunterstützung.

Eingebaute Unterstützung für sehr lange Dateinamen (mehr als MAX_PATH = 260 Zeichen).

Synchronisationsdatenbank zur Weitergabe gelöschter Dateien und zur Konflikterkennung

Unterstützung für mehrere Ordnerpaare mit unterschiedlicher Konfiguration

Volle Unterstützung für Windows / Linux Symbolic Links und Windows Junction Points.

Schlanke und leicht zugängliche Benutzeroberfläche: Hoch optimiert für Geschwindigkeit und große Datenmengen.

Vollständig in C ++ codierte Algorithmen.

Alle Fortschrittsanzeigen auf maximale Leistung optimiert!

Erstellen Sie Stapeljobs für die automatische Synchronisierung mit oder ohne GUI.

Benutzerfreundlichkeit im Fokus:

Nur notwendige Funktionalität auf der Benutzeroberfläche: keine überladenen Menüs oder Icon-Dschungel.

Wählen Sie alle Ordner per Drag & Drop aus.

Zuletzt verwendete Konfiguration und Bildschirmeinstellungen werden automatisch gespeichert.

Verwalten und laden Sie verschiedene Konfigurationen per Drag & Drop, Load-Button oder Kommandozeile.

Doppelklicken, um eine externe Anwendung zu starten (z. B. Datei im Windows Explorer anzeigen)

Kopieren Sie alle Rasterdaten und fügen Sie sie als Text ein

Löschen Sie überflüssige / temporäre Dateien direkt im Hauptraster.

Kontextmenü mit der rechten Maustaste anklicken.

Umfassende Statusinformationen und Fehlermeldungen

Sortieren Sie die Dateilisten nach Name, Größe oder Datum.

Unterstützung für Dateigrößen von mehr als 4 GB.

Option zum Verschieben von Dateien in den Papierkorb, anstatt sie zu löschen / zu überschreiben.

Ignorieren Sie die Verzeichnisse "\ RECYCLER" und "\ System Volume Information" mit dem Standardfilter. (Nur Windows)

Lokalisierte Versionen sind für viele Sprachen verfügbar.

Vor dem Kopieren löschen: Vermeiden Sie Speicherplatzmangel bei großen Synchronisierungsaufträgen.

Filterfunktion zum Einschließen / Ausschließen von Dateien bei der Synchronisierung (ohne erneutes Vergleichen!).

Einschließen / Ausschließen bestimmter Dateien von der Synchronisierung vorübergehend.

Automatische Behandlung von Änderungen der Sommerzeit auf FAT / FAT32-Volumes.

Portable Version verfügbar (wählbar über Installer).

Native 64-Bit-Version.

Suchen Sie automatisch in FreeFileSync nach Updates.

Kopieren Sie gesperrte Dateien mit dem Windows Volume Shadow Copy Service. (Nur Windows)

Erstellen Sie regelmäßige Sicherungen mit den Makros% time%,% date% innerhalb der Verzeichnisnamen

Kopieren Sie beim Synchronisieren die Erstellungs- / Zugriffs- / Änderungszeiten für Dateien und Ordner

Erweiterte Sperrstrategie, um mehrere Synchronisationsvorgänge zu ermöglichen (z. B. mehrere Writer, dieselbe Netzwerkfreigabe)

Ich würde hinzufügen, dass es gelöschte Dateien verwalten und sie in den Papierkorb oder in einen vom Benutzer angegebenen Ordner verschieben kann. Um auf einen Nachteil hinzuweisen: Die Programmdokumentation konzentriert sich ziemlich stark auf Windows, weniger auf Linux. Aber es macht seine Arbeit gut.


3

Sie können diffuse verwenden:

sudo apt-get install diffuse
diffuse file1 file2

2
Ich verwende Diffuse oft für eine Killer-Funktion - die Möglichkeit, Merge-Anker manuell zu setzen. Es gibt (noch) keine Verzeichnisse, aber für einzelne und unordentliche Unterschiede ist die Funktion "Anker" fantastisch.
Sk606,

2

Sie können meld versuchen .

Es ist das Repository und bietet eine grafische Benutzeroberfläche für den Vergleich von Dateien oder Ordnern.


1
Meld ist eine GUI für diff, übrigens.
Marco Ceppi

1

Eclipse IDE ist ein bisschen schwergewichtig, wenn Sie nur Vergleiche anstellen, aber es leistet unter anderem gute Arbeit. Sie können 2 Projekte, Pfade oder Dateien auswählen und miteinander vergleichen sowie mit Versionsverwaltungsservern synchronisieren.


1

IMHO FreeFileSync ist sehr gut und nützlicher als Meld. Es ist schnell und stabil, kann kostengünstige Synchronisierungen durchführen und das Ergebnis des Vergleichs auch in eine CSV-Datei exportieren.

Lanchpad-Link



0

Dateien vergleichen

File_1.txt
Line1
Line2

File_2.txt
Line1
Line 2

Sie können den Befehl verwenden cmp:

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

Ausgabe wäre

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

So vergleichen Sie Verzeichnisse (Ihren Bedarf):

Sie können den Befehl diff verwenden :

diff -r --brief dir1 dir2

man diff

  -r, --recursive
              recursively compare any subdirectories found

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