Übersicht
`diff -r` identifiziert Unterschiede, indem es die Verzeichnisstrukturen und die darin enthaltenen Dateien vergleicht. Es meldet nicht nur Unterschiede im Dateiinhalt, sondern auch Dateien oder Verzeichnisse, die nur in einer der beiden Seiten vorhanden sind.
Hauptmerkmale
- Rekursiver Vergleich von Dateien und Unterverzeichnissen in zwei Verzeichnissen
- Detaillierte Berichterstattung über Unterschiede im Dateiinhalt
- Identifizierung von Dateien oder Verzeichnissen, die nur auf einer Seite vorhanden sind
- Nutzung zur Nachverfolgung von Änderungen in Versionskontrollsystemen (VCS)
Wichtige Optionen
Dies sind die am häufigsten verwendeten Optionen des `diff`-Befehls, insbesondere in Kombination mit dem rekursiven Verzeichnisvergleich (`-r`).
Vergleichsmethoden und Ausgabe
Erzeugter Befehl:
Kombinieren Sie die Befehle.
Beschreibung:
`diff-r` Führen Sie den Befehl aus.
Kombinieren Sie diese Optionen und führen Sie die Befehle virtuell zusammen mit der KI aus.
Anwendungsbeispiele
Verschiedene Beispiele für die Verwendung von `diff -r` zum Vergleichen des Inhalts zweier Verzeichnisse.
Rekursiver Vergleich zweier Verzeichnisse
diff -r dir1 dir2
Vergleicht alle Dateien und Unterverzeichnisse in den Verzeichnissen dir1 und dir2.
Rekursiver Vergleich (kurze Zusammenfassung)
diff -rq dir1 dir2
Listet nur die Dateien auf, die Unterschiede aufweisen, und überspringt die detaillierten Unterschiede im Dateiinhalt.
Neue Dateien in den Vergleich einbeziehen
diff -rN dir1 dir2
Behandelt Dateien, die nur auf einer Seite vorhanden sind, als leere Dateien auf der anderen Seite und schließt sie in die Vergleichsergebnisse ein.
Bestimmte Dateien/Verzeichnisse ausschließen
diff -r --exclude='.git' --exclude='*.log' dir1 dir2
Schließt das `.git`-Verzeichnis und Dateien mit der Erweiterung `.log` vom Vergleich aus.
Erstellen einer Patch-Datei im Unified-Format
diff -ru dir1 dir2 > changes.patch
Gibt die Unterschiede zwischen zwei Verzeichnissen im Unified-Format aus und speichert diese in der Datei `changes.patch`. Diese Datei kann mit dem `patch`-Befehl angewendet werden.
Tipps & Hinweise
`diff -r` ist ein mächtiges Werkzeug, aber bei der Vergleiche von großen Verzeichnissen ist Vorsicht bei der Leistung und der Interpretation der Ausgabedaten geboten.
Tipps für eine effiziente Nutzung
- **Leistungsoptimierung**: Beim Vergleich großer Verzeichnisse kann die Verwendung der Option `-q` (kurze Ausgabe) die Vergleichsgeschwindigkeit erhöhen, indem nur die Existenz von Unterschieden anstelle der detaillierten Unterschiede im Dateiinhalt gemeldet wird.
- **Ausschluss unnötiger Dateien**: Durch die Verwendung der Option `--exclude` können Sie die Vergleichsgeschwindigkeit erhöhen und Rauschen in den Ausgabedaten reduzieren, indem Sie Dateien oder Verzeichnisse ausschließen, die nicht verglichen werden müssen, wie z.B. Versionskontrollsysteme (z.B. `.git`, `.svn`), Build-Artefakte (z.B. `*.o`, `*.pyc`) oder Log-Dateien (z.B. `*.log`).
- **Erstellung von Patch-Dateien**: Eine mit `diff -ru dir1 dir2 > changes.patch` erstellte Patch-Datei kann einfach mit dem Befehl `patch -p1 < changes.patch` auf ein anderes Verzeichnis angewendet werden.
- **Binärdateien**: `diff` ist primär für Textdateien optimiert. Um Unterschiede in Binärdateien zu erkennen, verwenden Sie den Befehl `cmp`, oder `diff` wird melden 'Binary files ... differ', wenn es Binärdateien erkennt.