Batch-Edit in MD5-Dateien

Xhool

Ensign
Registriert
März 2007
Beiträge
142
Als jemand, der null Programmierkenntnisse hat, wende ich mich an Euch in der Hoffnung, bei einem Problem Hilfe zu bekommen.

Ich habe in einer Sicherheitskopie alle Dateien jeweils mit einem MD5-hash-File ausgestattet. Da sieht dann in etwa so aus (alle Dateien sind im gleichen Format gespeichert.

Jahr - Name.xxx
Jahr - Name.md5

Jetzt möchte ich die Dateien systematisch umbenennen (vorne sollen x-Zeichen gelöscht werden, an das Ende des Dateinamens soll ein bestimmter Text angefügt werden), habe dann allerdings das Problem, dass dann der Dateiname in dem Hash-File nicht mehr übereinstimmt und mein Programm (Total Commander) keine Verifizierung mehr vornimmt.

Gibt es ein Programm oder einen Befehl, wie ich die Textdatei entsprechend anpassen kann?

In der Textdatei steht folgendes:

0bf5381058b5a4a89d1b04c87ddb6912 *Jahr - Name.xxx
(Die 32stellige Zahl stellt die Checksumme dar, nach dem Sternchen folgt der Dateiname)

Der Inhalt dieser Textdatei soll dann dem neuen Dateinamen entsprechend angepasst werden, sodass eine Verifizierung wieder möglich ist. Betriebssystem ist hierbei Windows 10.

Vielen Dank schonmal für Eure Hilfe.
 
Warum steht denn in der Textdatei nochmal der Dateiname drin wenn der MD5 Hash eh schon über den Namen der Datei zugeordnet werden kann? Hätte jetzt erwartet dass *.md5 nur noch den Hash enthält.
Wenn du das noch ändern kannst wäre das denke ich zu empfehlen, dann ist Umbenennen in der Zukunft wesentlich einfacher.
Natürlich bekommt man das mit einem kleinen Script oder Bash Pipe Magic auch so hin.

Um mehrere Dateien in einem Rutsch umzubenennen wurden hier einige Tools genannt:
https://www.computerbase.de/forum/t...rerer-dateien-ersetzen.2068979/#post-26558466
 
Bitopium schrieb:
Warum steht denn in der Textdatei nochmal der Dateiname drin wenn der MD5 Hash eh schon über den Namen der Datei zugeordnet werden kann?
Vermutlich, weil es dem typischen Md5sum-Format anlehnt. https://en.wikipedia.org/wiki/Md5sum
Verstehe nur den Sinn des Sternchens nicht.

Würde evtl einfach jetzt alles verifzieren, und falls die Hashes noch passen alles umbenennen und neu hashen, wenn kein geeignetes Tool gefunden wird.
 
  • Gefällt mir
Reaktionen: BeBur und Bitopium
@tollertyp

Das ist Plan B, der aufgrund der Dateimenge und Größe aber etwas Zeit in Anspruch nimmt. Das Umbenennen der Dateinamen stellt an sich kein Problem dar, da kenne ich selbst genügend Tools.

Den Sinn des Sternchens verstehe ich auch nicht, das macht Total Commander automatisch dahin.
 
Also vielleicht sollte man das Problem auch eher als zwei Probleme betrachten:
  • Umbenennung der Dateien
  • Anpassung der md5-Dateien

Für das letztere:
Ist denn die md5-Datei immer gleich benannt bis auf die Erweiterung, und enthält die md5-Datei dann am Ende eben nur Hashes von Dateien mit exakt diesem "Basis-Dateinamen"?

Weil dann könnte man auch eigentlich gut automatisiert den Inhalt der Dateien anpassen. Könnte mir hier ein PowerShell-Script gut vorstellen, das alle md5-Dateien sucht, öffnet, den Namen anpasst und speichert.
 
  • Gefällt mir
Reaktionen: Bitopium
Ein naives Bash Skript könnte so ausschauen:


Bash:
#!/bin/bash
files=$(find . -name '*.md5' -printf "%f\n")

for file in $files
do
    new_content=$(cat $file | awk -v file="$file" '{print $1, "*"file}')
    echo $new_content > $file
done
 
Sehr naiv, weil es die Erweiterung ersetzt, den Stern entfernt und bei Unterverzeichnissen sich etwas komisch verhält.

Aber ob bash oder PowerShell, das ist am Ende zweitrangig. Nur für dieses Problem würde ich mir aber keine WSL holen.

Deshalb wichtig bei der Arbeit mit solchen Scripten: Es in einem separaten Ordner-Bereich testen, auch mit Unterverzeichnissen usw...
 
Ach, das mit dem Unterverzeichnis war mein Fehler.
Aber die Erweiterung ist definitiv falsch in der md5-Datei:
1644944156261.png
 
Oh ja, natürlich. Mein Fehler. War dann ein bisschen zu schnell zusammengeschustert...
 
Zur Erinnerung, GNU kompatible MD5 Dateien haben
  • die MD5 Summe in hexadezimaler Beschreibung ( jeweils ein Zeichen pro vier Bits)
  • ein Leerzeichen 0x20 als Trennzeichen
  • Einen Indikator für Text- oder Binärdatei; Leerzeichen 0x20 für Text XOR Sternchen 0x2A für Binär, exakt ein Zeichen
  • Pfad zur Datei. Per Konvention selbes Verzeichnis, also der blanke Dateiname relativ zur MD5-Datei (MD5 Datei im selben Ordner).
  • Zeilenende.


Die Anforderung ohne Programmierkenntnisse umsetzen wird glaub ich schwierig, vor allem, wenn es hinterher auch noch sofort funktionieren soll und man sich in etwa da drauf verlassen können möchte.

Vielleicht gibts wen mit Erfahrung in der Verwandtschaft?

Wäre eigentlich schade, wenn man das alles neu hashen müßte... denn erforderlich ist es nicht, die md5sum hängt am Dateiinhalt, nicht am Namen.

Aber es ist halt auch nicht ganz trivial, wenn es mehrere Einträge in der md5 Datei gibt; dann müssen Einträge dynamisch zwischen solchen Dateien verschoben werden und da muß man schon etwas genauer aufpassen.
 
  • Gefällt mir
Reaktionen: tollertyp
Naja, ich hab jetzt angefangen, das ganze händisch zu korrigieren. Trotzdem danke für Eure Hilfe!
 
Zurück
Oben