Moin,

> #mungefilename ()
> #{
> #       echo "$@" | sed s,:,\ -,g | tr \ / __ | tr -d \'\"\?\[:cntrl:\]
> #}
> 
> Nun meine konkreten Fragen dazu, Ihr sollt mir ja nicht den kompletten 
> Ausdruck basteln, das will ich schön selbst ausprobieren :-)
> 
> "tr \ / __" verstehe ich inzwischen. Und habe ihn auf "tr / _" geändert.

das funktioniert ?! Also bei der ersten Variante "tr \ / __" wird ein
Leerzeichen durch einen Unterstrich ersetzt. Eigentlich würde "tr \ / _" auch
reichen. Bei "tr / _" wird ein Slash durch einen Unterstrich ersetzt.
 
> Den letzten Teil hab ich etwas angepasst. Es bleibt "tr -d \[:cntrl:\]", 
> womit ich allerdings nicht allzu viel anfangen kann. Laut "man" sollte 
> das doch nur "tr -d [:cntrl:]" heissen? Ich weiss nicht wo da jetzt der 
> Unterschied liegt?

-d = delete, also sollen alle dort "entwerteten" Zeichen (erkennbar am
vorangestellten Backslash) gelöscht werden.

> Was ganeu wird mit [:cntrl:] gelöscht, damit ich mal was testen kann?

Sch... Office-PC ... schau mal unter "man perlre" und suche nach cntrl (hab
keinen Bock das alles abzuschreiben)
 
> Und nun zu "sed". Hier verstehe ich gar nichts :-) Brauche ich es denn 
> für meine Zwecke? (nur erlaubte Zeichen in Dateinamen)

Ersetzt einen Doppelpunkt durch ein Leerzeichen gefolgt von einem Minus. Die
Kommazeichen bilden die Begrenzungszeichen (auch s#:#\ _#g oder s/:/\ -/g).
Ob du das brauchst, mußt du selbst entscheiden.

Ciao
Holger

----------------------------------------------------------------------------
PUG - Penguin User Group Wiesbaden - http://www.pug.org

Antwort per Email an