Aus Raspberry Pi Geek 06/2020

Mit Diff Unterschiede in Dateien aufspüren (Seite 2)

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.

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.

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.

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.

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.

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

-ct

Text vergleichen (Standard)

-ca

grafischer Vergleich (für Scans)

-v=0

Ausgabe im Terminal unterdrücken

-v=1

Ausgabe bei Unterschied

-v=2

vollständige Ergebnisse anzeigen

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 8 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Raspberry Pi Geek bei Google Play Readly Logo
Nach oben