Vergleichen Sie den Inhalt von zwei Ordnern, einschließlich Unterordnern

Im Laufe der Jahre habe ich Fotos vom iPhone auf den Mac importiert und sie nach Monaten in Ordnern organisiert.

Ich möchte jetzt alle Fotos, die ich auf dem iPhone habe, importieren und diese mit den Dateien vergleichen, die ich im Laufe der Jahre in Ordnern organisiert habe - falls welche fehlen.

Gibt es ein Tool (in OSX enthalten oder kostenlos/käuflich) oder ein anderes Verfahren, das Ordnerinhalte vergleichen kann, wobei ein Ordner die Dateien im Stammverzeichnis und der andere in vielen Unterordnern enthält?

Was vergleichen? Anzahl Dateien, Größe, Art, Inhalt ?
Vergleichen der Existenz von Dateien, falls sie fehlen/dupliziert sind.
Das können Sie mit dem einfachen Terminal-Befehl "diff -rq Ordner1 Ordner2" tun.
Vieles hängt mit Frage 10252 zusammen .

Antworten (2)

Klemme: diff

Sie können zwei Ordner im Terminal mit dem folgenden Befehl vergleichen:

diff -rq /path/to/folder1 /path/to/folder2

Um die Ordnerhierarchie zu ignorieren, können Sie alle Dateien aus einem Ordner in einen dritten Ordner kopieren und diese dann vergleichen:

find /path/to/folder2 -mindepth 2 -type f -print -exec cp {} /path/to/folder3 \;
Wie würde ich nach allen Dateien in einem Ordner suchen, einschließlich derer in Unterordnern? Die Unterordner sind in den vergleichenden übergeordneten Ordnern nicht identisch.
@Numbers Ich glaube, ich habe Ihre Frage falsch verstanden. Ich glaube nicht, dass Sie das tun können, aber Sie könnten zuerst alle Fotos aus den Unterordnern zum Vergleich in einen einzigen zweiten Ordner kopieren. Dies hängt natürlich davon ab, wie viele Fotos Sie haben.
Es sind 25 GB und 100 Ordner und ich möchte sie in den Ordnern behalten. Aber ich werde einen Weg finden.
@Numbers Ich verstehe, dass Sie sie in Ordnern aufbewahren möchten - ich meinte, kopieren Sie sie nur für den Vergleich und löschen Sie dann die kopierten. Führen Sie zum Beispiel etwas wie find /path/to/folder2 -mindepth 2 -type f -print -exec cp {} /path/to/folder3 \;, dann das Diff aus und löschen Sie dann den Ordner3.

Dies ist ein alter Thread, ich weiß, aber es sieht so aus, als ob die Frage nicht vollständig beantwortet wurde. Ich bin darüber gestolpert, bevor ich versuchte, ungefähr die gleichen Dinge für mich selbst herauszufinden, also dachte ich, ich würde eine Option posten, falls andere darüber stolpern ...

Einige der Antworten waren fast da ... und meine könnte einfacher gemacht werden, aber es funktioniert!

Dadurch wird eine Datei mit allen Namen Ihrer Fotos erstellt:

find /path/to/the/topmost folder/of/photos -mindepth 2 -type f -print | sed's/^.*///' | sort > /tmp/photos-from-folders

Wenn sich welche in Ordnern befinden, die anderen gehören, stellen Sie sudo voran und verwenden Sie >>, um diese Dateinamen an diejenigen anzuhängen, die sich bereits in der ursprünglichen Datei befinden.

Verwenden Sie einen ähnlichen Befehl, um eine zweite Datei zu erstellen, die alle Dateinamen der Fotos Ihres Telefons enthält.

Sie können einfach einen Diff machen und mit > an eine Datei senden oder, wenn Sie wissen, welche Menge die größte ist, diese als Datei1 verwenden und tun

diff Datei1 Datei2 | egrep -v '<' > filediff-output

Natürlich wurden alle Pfade von sed in der anfänglichen Suche entfernt, um nur die Dateinamen zu generieren. Wenn Sie etwas sehen, das möglicherweise fehlt, möchten Sie wissen, wo es sich befindet, also verwenden Sie es

sudo find /Path/to/the/topmost folder/of/photos -name 'filename-you-want' -ls

und das wird Ihnen sagen, wo es ist.

Hoffe das hilft. Ich half mir herauszufinden, was ich von einem alten Home-Verzeichnis von mir behalten muss, das sich nicht in meinem neuen Home-Verzeichnis befindet. 65 GB Platz gespart!