Vergleichen Sie den Inhalt von zwei Verzeichnissen von der Befehlszeile

Um die verschiedenen Inhalte zweier Verzeichnisse zu vergleichen und aufzulisten, ohne dass die zusätzliche Ausgabe Befehle wie diff erfordert, können Sie stattdessen den Befehl comm verwenden. Starten Sie Terminal, und geben Sie den folgenden Befehl ein, und passen Sie die Verzeichnispfade entsprechend an:

comm -3 <(ls -1 folder1) <(ls -1 folder2)

Die aufgelisteten Ausgaben sind die Dateien, die sich in jedem Ordner unterscheiden, wobei Dateien, die nur für Ordner1 nach links ausgerichtet sind, und Dateien, die eindeutig für Ordner2 sind, nach rechts ausgerichtet sind.

Um beispielsweise den Inhalt eines Ordners namens "Bilder" und eines Ordners mit dem Namen "Alte Bilder" zu vergleichen, die beide im Verzeichnis für Benutzer-Downloads gespeichert sind, lautet die Syntax wie folgt:

comm -3 <(ls -1 ~/Downloads/Pictures) <(ls -1 ~/Downloads/OldPictures)

Die Ausgabe könnte folgendermaßen aussehen:

$ comm -3 <(ls -1 ~/Downloads/Pictures) <(ls -1 ~/Downloads/OldPictures)
Folder-1-File.PNG
Folder-2-File copy.PNG
photo 1 copy.PNG
photo 3.PNG

Beachten Sie die Einrückung, die Ihnen zeigt, welche Dateien für jeden Ordner eindeutig sind. Im obigen Beispiel sind die Dateien "photo 1 copy.PNG" und "photo 3.png" richtig ausgerichtet, daher sind sie für das OldPictures-Verzeichnis und die Ordner-1-Datei.PNG- und Ordner-2-Datei-Kopie eindeutig. PNG sind einzigartig für den ursprünglichen Bilderordner.

Das funktioniert gut in Mac OS X, aber es ist ein generischer Unix-Befehl, so dass Sie ihn auch in Linux und anderen Varianten finden sollten. Wenn Sie auf Kompatibilitätsprobleme stoßen oder diesen Befehl als unnötig komplex empfinden, versuchen Sie es mit diff, um die gleiche Funktion auszuführen.

Toller Trick von @climagic auf Twitter, @osxdaily ist auch da!