GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Linux:Verzeichnisstruktur vergleichen, ohne Dateien zu vergleichen

Das Folgende (wenn Sie das erste Verzeichnis für Verzeichnis1 und das zweite für Verzeichnis2 ersetzen) sollte das tun, wonach Sie suchen, und zwar schnell:

find directory1 -type d -printf "%P\n" | sort > file1
find directory2 -type d -printf "%P\n" | sort | diff - file1

Das grundlegende Prinzip ist, dass es alle Verzeichnisse einschließlich Unterverzeichnispfaden relativ zu den Verzeichnissen des Basisverzeichnisses ausgibt.

Dies könnte herunterfallen (seltsame Ausgabe erzeugen), wenn Sie Wagenrückläufe in einigen Verzeichnisnamen haben, aber nicht in anderen.


vimdiff <(cd dir1; find . | sort) <(cd dir2; find . | sort)

wird Ihnen eine schöne Seite-an-Seite-Anzeige der beiden Verzeichnishierarchien geben, wobei alle gemeinsamen Abschnitte gefaltet sind.


Normalerweise verwende ich rsync für diese Aufgabe:

rsync -nav --delete DIR1/ DIR2

SEIEN SIE SEHR VORSICHTIG um immer die -n zu verwenden , auch bekannt als --dry-run , Option, oder es werden die Verzeichnisse synchronisiert (deren Inhalt geändert).

Dadurch werden Dateien basierend auf Dateiänderungszeiten und -größen verglichen ... denke ich das ist es, was du wirklich willst, oder es stört dich zumindest nicht, wenn es das tut? Ich habe das Gefühl, dass Sie nur wollen, dass es schneller passiert , nicht dass Sie es brauchen, um den Unterschied zwischen Dateiinhalten zu ignorieren. Wenn Sie nicht möchten, dass unterschiedliche Dateien mit identischen Namen aufgelistet werden, denke ich an die Hinzufügung des --ignore-existing Option wird das tun.

Beachten Sie auch, dass Sie keinen / setzen am Ende von DIR1 bewirkt, dass das Verzeichnis verglichen wird DIR1 mit dem Inhalt von DIR2 .

Die Ausgabe ist am Ende etwas ausführlich, zeigt Ihnen jedoch, welche Dateien/Verzeichnisse sich unterscheiden. Dateien/Verzeichnisse vorhanden in DIR2 und nicht in DIR1 wird das Wort deleting vorangestellt .

In einigen Situationen ist die Antwort von @slartibartfast möglicherweise angemessener, obwohl Sie den -type d entfernen müssen Option zum Aktivieren der Auflistung von Nicht-Verzeichnisdateien. rsync wird schneller sein, wenn Sie eine beträchtliche Anzahl von Dateien/Verzeichnissen zu vergleichen haben.


Linux
  1. So extrahieren Sie Tar-Dateien in ein bestimmtes oder anderes Verzeichnis in Linux

  2. Linux – Wie überprüft man die Verzeichnisstrukturinformationen einer Unix/Linux-Datei?

  3. Entfernen Sie nur Dateien in Verzeichnissen unter Linux, NICHT in Verzeichnissen

  4. Maximale Anzahl von Dateien/Verzeichnissen unter Linux?

  5. Dateien in einem Linux-Verzeichnis rekursiv zählen

Wie man Dateien in Linux rekursiv auflistet

So zählen Sie Dateien im Verzeichnis unter Linux

Zählen Sie die Anzahl der Dateien in einem Verzeichnis in Linux

Linux-Verzeichnisstruktur für Anfänger erklärt

So zählen Sie die Anzahl der Dateien in einem Verzeichnis in Linux

Vergleichen von zwei Dateien im Linux-Terminal