Mailinglist Archive: opensuse-de (989 mails)
| < Previous | Next > |
Re: basename(?) und Variab le in Dateinamen einfügen
- From: David Haller <dnh@xxxxxxxxxxxx>
- Date: Sat, 26 Sep 2009 12:20:45 +0200
- Message-id: <20090926102045.GA21415@xxxxxxxxxxxxxxxxxx>
Hallo,
Am Sam, 26 Sep 2009, Al Bogner schrieb:
*g*
Jetzt ja.
Schlecht, da Meta-Zeichen in der Shell, aber möglich. Als Trennzeichen
würde ich ganz klassisch "_" nehmen (zusammen mit passender Regex zum
wieder rauspfriemeln), wenn Sonderzeichen vermieden werden sollen,
ansonsten irgendwas aus ASCII 160-255, z.B. § oder ¡ oder so. Das
allerdings nur, wenn man generell nicht mit UTF-8 arbeitet. Mit UTF-8
würde ich non-ASCII strikt vermeiden (> 1-Byte Zeichen als Trenner
kann eigentlich nur ins Auge gehen ;)
Ansonsten würde ich "Tagging" als Trenner nehmen. Also z.B.:
"Name_MD5SUM_${MD5SUM}.ext"
(erstellt s.o.). Regex dann eben '_MD5SUM_[0-9a-f]\+\.[^.]\+$' oder
so.
Für diesen Zweck könnte evtl. CRC32 reichen, das scheint aber nicht
wirklich schneller als md5sum (und es gibt seeeeehr viel
wahrscheinlicher Hash-Kollisionen).
Ich schätze, bei md5sum und crc32 ist selbst hier auf meiner ollen
Kiste die Festplatte der begrenzende Faktor (und die relevante
(zufällig die neueste) IDE-Platte ist >7 Jahre neuer als die CPU),
hdparm -t kommt auf ca. 40.51 MB/s was gar nicht so übel für so ne
olle Möhre ist :) Lt. Adam Riese ist's dann aber wohl doch die CPU bei
mir: 2042/40 ~ 51s (vs. >120s bei den Checksummen). Aber in der Praxis
bekomm ich hier glaub keine 40 MB/s raus. Hm. Grad nochmal per dd
getestet: das braucht ca. 50s.
### foo.mkv hat 2042 MB
$ time crc32 foo.mkv
real 1m2.106s
$ time md5sum foo.mkv
real 1m19.043s
$ time sha1sum foo.mkv
real 2m41.136s
(aus dem Cache kommt dabei nur sehr wenig, hab hier nur 320 MB RAM ;)
HTH,
-dnh
--
"And all those exclamation marks, you notice? Five? A sure
sign of someone who wears his underpants on his head."
Terry Pratchett -- "Maskerade"
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
opensuse-de+unsubscribe@xxxxxxxxxxxx
Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken
Sie eine Mail an: opensuse-de+help@xxxxxxxxxxxx
Am Sam, 26 Sep 2009, Al Bogner schrieb:
Am Samstag 26 September 2009 08:53:38 schrieb David Haller:
Am Fre, 25 Sep 2009, Al Bogner schrieb:
Gegeben ist eine Datei inkl. Pfad mit irgendeiner Erweiterung.
Also zB
/dir1/dir2/irgend.was.txt (Die Punkte im Namen sind unbestimmt)
Nun soll eine Variable $var vor der Erweiterung eingefügt werden.
/dir1/dir2/irgendwas$var.txt
Wie macht man das am besten?
Mit basename? Dann muss aber die Erweiterung bestimmt werden?
Mit sed?
Ja. Zum Beispiel.
$ v="HURZ";
$ echo "/foo/bar/Foo.Bar.Baz.Quux" | \
sed -n "s/\.\([^.]+\)\$/_${v}.\1/p";
/foo/bar/Foo.Bar.Baz_HURZ.Quux
Noch Fragen?
Danke David, ich überlege mir das langsam ;-) und melde mich bei Bedarf.
*g*
Wenn du vielleicht den ganzen Thread gelesen hast, dann weist du,
dass $v eine MD5-Summe ist.
Jetzt ja.
Die muss nach der Übertragung wieder extrahiert werden. "_" kommen im
Dateinamen noch andere vor. Was wäre ein guter Delimiter für $v? Was
ist von "~" am Anfang und Ender der MD5-Summe zu halten?
Schlecht, da Meta-Zeichen in der Shell, aber möglich. Als Trennzeichen
würde ich ganz klassisch "_" nehmen (zusammen mit passender Regex zum
wieder rauspfriemeln), wenn Sonderzeichen vermieden werden sollen,
ansonsten irgendwas aus ASCII 160-255, z.B. § oder ¡ oder so. Das
allerdings nur, wenn man generell nicht mit UTF-8 arbeitet. Mit UTF-8
würde ich non-ASCII strikt vermeiden (> 1-Byte Zeichen als Trenner
kann eigentlich nur ins Auge gehen ;)
Ansonsten würde ich "Tagging" als Trenner nehmen. Also z.B.:
"Name_MD5SUM_${MD5SUM}.ext"
(erstellt s.o.). Regex dann eben '_MD5SUM_[0-9a-f]\+\.[^.]\+$' oder
so.
Gibt es eine kürzere Prüfsumme als die MD5-Summe? Es geht in erster Linie
darum, zu merken, ob die Übertragung ok war bzw. ob sie unterbrochen wurde,
weil der VPS neu gestartet wurde.
Für diesen Zweck könnte evtl. CRC32 reichen, das scheint aber nicht
wirklich schneller als md5sum (und es gibt seeeeehr viel
wahrscheinlicher Hash-Kollisionen).
Ich schätze, bei md5sum und crc32 ist selbst hier auf meiner ollen
Kiste die Festplatte der begrenzende Faktor (und die relevante
(zufällig die neueste) IDE-Platte ist >7 Jahre neuer als die CPU),
hdparm -t kommt auf ca. 40.51 MB/s was gar nicht so übel für so ne
olle Möhre ist :) Lt. Adam Riese ist's dann aber wohl doch die CPU bei
mir: 2042/40 ~ 51s (vs. >120s bei den Checksummen). Aber in der Praxis
bekomm ich hier glaub keine 40 MB/s raus. Hm. Grad nochmal per dd
getestet: das braucht ca. 50s.
### foo.mkv hat 2042 MB
$ time crc32 foo.mkv
real 1m2.106s
$ time md5sum foo.mkv
real 1m19.043s
$ time sha1sum foo.mkv
real 2m41.136s
(aus dem Cache kommt dabei nur sehr wenig, hab hier nur 320 MB RAM ;)
HTH,
-dnh
--
"And all those exclamation marks, you notice? Five? A sure
sign of someone who wears his underpants on his head."
Terry Pratchett -- "Maskerade"
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
opensuse-de+unsubscribe@xxxxxxxxxxxx
Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken
Sie eine Mail an: opensuse-de+help@xxxxxxxxxxxx
| < Previous | Next > |