Schnell Dateien vergleichen

Nicht immer muss eine Lösung schön sein, oder über den einmaligen Anwendungsfall hinausgehen. Im Folgenden findet sich genau so eine Lösung.

Die zu lösende Aufgabe besteht darin, in einem Verzeichnis alle (sinnvollen) Dateien miteinander zu vergleichen. Da diese Lösung kein weiteres Mal Verwendung finden soll, wird auf einen möglichst schnellen Ansatz zurückgegriffen, indem die Liste von Dateien mit deren Checksumme mittels Linux-Boardmitteln erstellt wird; verglichen wird dann jedoch mit Python.

#!/usr/bin/env python2

# find /path/to/files -type f -exec cksum {} \; > sh1.chk
SH1 = "sh1.chk"
SH3 = "sh3.chk"

with open(SH1) as f:
        sh1 = f.readlines()

with open(SH3) as f:
        sh3 = f.readlines()

for line1 in sh1:
        file1 = line1.split(' ')[2]
        if file1.find('log') > 0: continue
        if file1.find('out') > 0: continue

        for line3 in sh3:
                file3 = line3.split(' ')[2]
                if file1 == file3:
                        chk1 = line1.split(' ')[0]
                        chk3 = line3.split(' ')[0]
                        if chk1 != chk3: print "XXX ",
                        print("{}: {} <-> {}".format(file1.strip(), chk1, chk3));

Sehr schmutzig, aber innerhalb weniger Momente wurde hiermit ein komplexes Problem gelöst.