Listing 3
#! /bin/bash
# Löschen von Duplikaten
echo "Gefundene Duplikate:"
duff -re .
echo "------------------------------------"
read -p "Alle löschen (A), Löschen mit Nachfrage (f), ABBRUCH (ENTER) " we
if [ -z $we ]; then
echo "Keine Aktion gewählt"
exit
fi
if [ "$we" = "A" ]; then
for i in $(duff -re .); do
rm -rv $i
done
fi
if [ "$we" = "f" ]; then
for i in $(duff -re .); do
rm -rvi $i
done
fi

Abbildung 5: Wollen Sie Duplikate aus einem Verzeichnis entfernen, eignet sich dazu eine Kombination aus Duff mit etwas Shell-Logik.
Zeichenketten vergleichen
Das Shell-Builtin test leistet meist gute Dienste beim Vergleichen von Zeichenketten (Listing 4). Für einen schnellen Vergleich ist so ein Konstrukt jedoch umständlich. Mit Difference gelingt das Auswerten zweier Strings übersichtlicher. Abbildung 6 zeigt die Arbeitsweise des Tools.
Listing 4
if [ "$HOME" = "$PWD" ]; then echo "Aktuelles Verzeichnis ist das Heimatverzeichnis" else echo "Aktuelles Verzeichnis ist nicht das Heimatverzeichnis" fi

Abbildung 6: Difference hilft Ihnen dabei, Zeichenketten auf die Schnelle zu vergleichen.
Um dieses Programm in ein Skript einzubinden, bietet sich der Befehl wc zum Auswerten des Ergebnisses an. Listing 5 zeigt ein sehr reduziertes Beispiel; Abbildung 7 gibt einen Eindruck vom Ablauf des Skripts.
Listing 5
#! /bin/bash # Minimalistischer Zeichenkettenvergleich read -p "1. Eingabe: " a read -p "2. Eingabe: " b c=$(difference $a $b | wc -w) if [ $c -eq 1 ]; then echo "Beide Eingaben sind identisch" elif [ $c -gt 1 ]; then echo "Die Eingaben unterscheiden sich" fi

Abbildung 7: Der Vergleich von zwei Zeichenketten ist eine Aufgabe, die Sie mit dem Tool Difference auf vergleichsweise einfache Weise erledigen.
Mehr Komfort
Etwas mehr Komfort bietet das Programm Icdiff. Beim Vergleich zweier Textdateien hebt es Unterschiede farblich hervor, beim Vergleich zweier Verzeichnisse erhalten Sie eine Liste mit den Unterschieden.
Wenn Sie die Ergebnisse von Icdiff in einem Shell-Skript auswerten möchten, benötigen Sie eine Kombination aus mehreren Tools, die Sie über eine Pipe verbinden. Abbildung 8 zeigt den Vergleich von Dateien und Verzeichnissen, jeweils abweichend und übereinstimmend.

Abbildung 8: Icdiff bringt beim Vergleich von Dateien und Verzeichnissen Farbe ins Spiel.
Auf anderen Rechnern
Der Vergleich von Text- und Binärdateien, die sich auf verschiedenen Rechnern befinden oder verschiedenen Benutzern auf einem System gehören, erfordert ein etwas anderes Handwerkszeug: Ssh-diff versteht die von Diff bekannten Optionen mit Ausnahme von -r.
Für den Aufbau der Verbindung dürfen Sie außerdem einen abweichenden Port beim Zielsystem angeben, und bei Bedarf beschränken Sie die Kommunikation auf IPv4 oder IPv6. Das Kennwort geben Sie doppelt ein, es sei denn, Sie arbeiten mit einer Authentifizierung, die auf passwortlosen Schlüsseln basiert.
Beim Vergleich von Binärdateien liefert Ssh-diff die Meldung, dass sich die Dateien unterscheiden. Abbildung 9 zeigt den Vergleich einer Textdatei. Im ersten Anlauf kommen in dem Beispiel zwei unterschiedliche, im zweiten zwei identische Dateien zum Einsatz.

Abbildung 9: Beim Vergleich mit Ssh-diff brauchen die Dateien nicht auf demselben Rechner zu liegen. Das Tool setzt aber SSH als Grundlage voraus.
PDF-Dateien
Für den Vergleich zweier PDF-Dateien per Shell eignet sich Comparepdf. Die Tabelle “Comparepdf-Optionen” zeigt die wenigen Optionen des Werkzeugs. Bei Gleichheit lautet der Exit-Code 0, andernfalls ist er größer null. Ein entsprechender Vergleich würde zwar auch mit Diff und Duff klappen, fiele aber komplexer aus.
|
Option |
Aktion |
|---|---|
|
|
Text vergleichen (Standard) |
|
|
grafischer Vergleich (für Scans) |
|
|
Ausgabe im Terminal unterdrücken |
|
|
Ausgabe bei Unterschied |
|
|
vollständige Ergebnisse anzeigen |





