Verzeichnisbaum nach md5 Prüfsummendateien durchsuchen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
shakky4711
Beiträge: 215
Registriert: 09.09.2009 13:33:17

Verzeichnisbaum nach md5 Prüfsummendateien durchsuchen

Beitrag von shakky4711 » 17.08.2011 12:56:17

Hallo,

ich habe ein Problem wo ich einfach nicht weiter komme.
In einem Verzeichnisbaum liegen (teilweise in weiteren Unterverzeichnissen) Verzeichnisse mit dem Aufbau
AUDIO_TS (Verzeichnis)
VIDEO_TS (Verzeichnis mit Videodateien)
name_des_Verzeichnisses.md5
Die md5 Datei enthält die Prüfsummen relativ zum Verzeichnis worin man sich befindet
xcxcxvcvxc *VIDEO_TS/weihnachten84.VOB
...
Führe ich ein md5sum -c name_des_verzeichnisses.md5 aus funktioniert es wie gewünscht. Ich wollte nun aber über eine find exec Kombination alle md5 Dateien innerhalb eines Abschnittes finden und die Prüfung starten. Ein

Code: Alles auswählen

$ find . -name *.md5 -exec ''md5sum -c {}'' \;
Zeigt mir diese Fehlermeldung: No such file or directory

Ich gehe davon aus dass das Find Kommando zwar die md5 Dateien findet und den Befehl ausführt, es aber an den relativen Dateipfaden in den md5 Dateien scheitert da ich mich ja irgendwo in einem übergeordneten Bereich befinde.

Bitte helft mir, ich habe schon probiert ein Script zu schreiben was über "dirname" erst in das Verzeichnis hineinwechselt aber bisher sind alle meine Versuche erfolglos und ich weiß nicht mehr weiter.

Danke und Gruß
Shakky

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Verzeichnisbaum nach md5 Prüfsummendateien durchsuchen

Beitrag von rendegast » 17.08.2011 13:06:59

So sollte es gehen

Code: Alles auswählen

$ find "$(pwd)" -name *.md5 -exec /tmp/exec-script.sh "{}" \;
/tmp/exec-script.sh:

Code: Alles auswählen

#!/bin/sh

MD5FILE="$1"
MD5PATH="$(dirname "$MD5FILE")"
cd "$MD5PATH"
md5sum -c "$MD5FILE" 2>&1 | egrep -v "OK$"
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

uname
Beiträge: 12419
Registriert: 03.06.2008 09:33:02

Re: Verzeichnisbaum nach md5 Prüfsummendateien durchsuchen

Beitrag von uname » 17.08.2011 13:46:25

Du suchst wohl nach "-execdir":

Code: Alles auswählen

find . -name *.md5 -execdir ''md5sum -c {}'' \;
Leider verlierst du damit auch den relativen Pfad. Zum Vergleich würde ich dann einfach den relativen Pfad bei den Originallisten wegwerfen (z.B. mit sed, awk usw.)

shakky4711
Beiträge: 215
Registriert: 09.09.2009 13:33:17

Re: Verzeichnisbaum nach md5 Prüfsummendateien durchsuchen

Beitrag von shakky4711 » 18.08.2011 12:34:28

Super, vielen Dank, es funktioniert so wie ich es mir vorgestellt habe, die erste Lösung von rendegast ist schon mal perfekt für mich.

Ich habe mal testhalber eine md5 Summe verändert, er zeigt dann
Video/xxx.VOB: FEHLSCHLAG
md5sum: Warnung: 1 von 2 berechneten Prüfsumme passten NICHT
an. Wie ändert man das Script dass er mir im Fehlerfall den kompletten Pfad oder den Namen der md5 Datei anzeigt? Bei hunderten von gleichnamigen VOB Dateien finde ich die korrupte Datei ja sonst nicht...

Gruß
Shakky

uname
Beiträge: 12419
Registriert: 03.06.2008 09:33:02

Re: Verzeichnisbaum nach md5 Prüfsummendateien durchsuchen

Beitrag von uname » 18.08.2011 12:42:37

Dateiname und Pfad sollte in der Variablen $MD5FILE bzw. $1 stehen (Programm /tmp/exec-script.sh).

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Verzeichnisbaum nach md5 Prüfsummendateien durchsuchen

Beitrag von rendegast » 18.08.2011 12:58:16

Etwa so:

Code: Alles auswählen

#!/bin/sh

MD5FILE="$1"
MD5PATH="$(dirname "$MD5FILE")"
cd "$MD5PATH"
echo "$PWD"   #   echo "$(pwd)"    #  echo "$MD5PATH"
md5sum -c "$MD5FILE" 2>&1 | egrep -v "OK$"
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

shakky4711
Beiträge: 215
Registriert: 09.09.2009 13:33:17

Re: Verzeichnisbaum nach md5 Prüfsummendateien durchsuchen

Beitrag von shakky4711 » 19.08.2011 12:06:55

Vielen Dank, Problem gelöst :-)

Antworten