Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
-
sowosammer
- Beiträge: 85
- Registriert: 04.11.2002 18:22:26
- Wohnort: Berlin
Beitrag
von sowosammer » 09.03.2005 20:49:11
Ich möchte per md5 bzw sha Prüfsummen von mehreren Dateien in einer verschachtelten Verzeichnisstruktur berechnen lassen
führt mich nicht weiter, da für mehrere Dateien nur eine Summe ausgegeben wird.
Wie würdets ihr machen?
-
gms
- Beiträge: 7798
- Registriert: 26.11.2004 20:08:38
- Lizenz eigener Beiträge: MIT Lizenz
Beitrag
von gms » 09.03.2005 20:55:54
ich würde das mit folgendem Kommando erledigen:
-
sowosammer
- Beiträge: 85
- Registriert: 04.11.2002 18:22:26
- Wohnort: Berlin
Beitrag
von sowosammer » 09.03.2005 21:17:19
Ja danke, funktioniert soweit bis auf das du die Pfadangabe vergessen hast, also zb einen Punkt .
Aber ganz grundsätzlich die Frage wie man denn zB per Piping Befehle hintereinanderhängen kann.
Also der erste Befehl produziert eine Liste von Dateien die dann der zweite als Eingabe verwendet.
Mein obiges Beispiel funktioniert eben nicht. Warum?
-
Mel
- Beiträge: 40
- Registriert: 28.09.2004 20:39:45
- Wohnort: Bonn
-
Kontaktdaten:
Beitrag
von Mel » 09.03.2005 21:33:09
Dein obiger Befehl funktioniert schon...
Code: Alles auswählen
mel@luzie:~$ ls -R|md5sum
ed851e785b4d88a4e8eb364539eeed82 -
Was hier passiert, ist folgendes: ls -R erzeugt eine Liste, die dann komplett an md5sum übergeben wird. Stell Dir einfach mal folgenden Zwischenschritt vor, vielleicht wird's dann etwas deutlicher:
Du musst md5sum mitteilen, dass es keinen Hashwert über die gesamte Liste, sondern vielmehr für jeden einzelnen Eintrag der Liste bilden soll.
Gruss,
Mel.
-
gms
- Beiträge: 7798
- Registriert: 26.11.2004 20:08:38
- Lizenz eigener Beiträge: MIT Lizenz
Beitrag
von gms » 09.03.2005 21:34:30
sowosammer hat geschrieben:Ja danke, funktioniert soweit bis auf das du die Pfadangabe vergessen hast, also zb einen Punkt .
habe ich nicht vergessen, den Punkt kannst du dir auch sparen. Bei gnu-find ist Pfadangabe optional
man find hat geschrieben:
SYNTAX
find [Verzeichnis] [-Option...] [-Test...] [-Aktion...]
Dein Kommando macht im wesentlichen das gleiche wie dieses Script (/tmp/liste.txt wird hier als Ersatz für die Pipe verwendet)
Code: Alles auswählen
ls - R >/tmp/liste.txt
md5Sum /tmp/liste.txt
del /tmp/liste.txt
Daher hast du genaugenommen die md5 Summe der Verzeichnisliste und nicht der Dateien erstellt.
-
sowosammer
- Beiträge: 85
- Registriert: 04.11.2002 18:22:26
- Wohnort: Berlin
Beitrag
von sowosammer » 09.03.2005 21:58:29
gms hat geschrieben:sowosammer hat geschrieben:Ja danke, funktioniert soweit bis auf das du die Pfadangabe vergessen hast, also zb einen Punkt .
habe ich nicht vergessen, den Punkt kannst du dir auch sparen. Bei gnu-find ist Pfadangabe optional
Ich benutz gerade mein iBook mit OS X, also kein GNU find.
Manchmal nerven fehlende bzw. anders funktionierende BSD Befehle.
Oder man lernt sogar mehr aus dem anderssein
-
gms
- Beiträge: 7798
- Registriert: 26.11.2004 20:08:38
- Lizenz eigener Beiträge: MIT Lizenz
Beitrag
von gms » 09.03.2005 21:59:00
@Mel
Deinen Beitrag hatte ich noch gar nicht gesehen. Ich habe im Aufstehen auf "Absenden" gedrückt und bin dann in die Küche marschiert ..
Das war meine erste Version:
Im letzten Augenblick habe ich dann das Verzeichnis eingefügt. Und das "del" ist mir dann auch noch reingerutscht
Naja, ich arbeite beruflich auf sehr vielen Betriebssystemen (Windows, Linux, Aix, SunSolaris) und da passieren solche Verwechslungen schon mal ...
-
lochkarte
- Beiträge: 190
- Registriert: 08.12.2004 11:43:44
Beitrag
von lochkarte » 09.03.2005 22:16:33
sowosammer hat geschrieben:Aber ganz grundsätzlich die Frage wie man denn zB per Piping Befehle hintereinanderhängen kann.
Also der erste Befehl produziert eine Liste von Dateien die dann der zweite als Eingabe verwendet.
Ich bin mir nicht ganz sicher, ob ich dich richtig verstehe. Du willst dir für eine Anzahl von Dateien jeweils die md5sum ermitteln? Dann so (entspricht ungefähr der gms-Lösung):
oder allgemeiner und find-unabhängig:
und dies etwas übersichtlicher:
Code: Alles auswählen
kommando $(ermittle_dateinamen_mit_befehl_deiner_wahl)
Bsp.:
Code: Alles auswählen
$ cat dateiliste
datei1
.gnome
.bash_profile
datei2
$ ls -ld $(cat dateiliste)
ls: datei1: Datei oder Verzeichnis nicht gefunden
ls: datei2: Datei oder Verzeichnis nicht gefunden
-rw-r--r-- 1 test test 704 2004-09-08 08:04 .bash_profile
drwx------ 6 test test 1024 2004-09-12 22:43 .gnome