Hallo, 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@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org