Hallo, Am Sat, 20 Nov 2004, Sören Wengerowsky schrieb:
Am Samstag, 20. November 2004 19:43 schrieb David Haller:
Besser ist, du invertierst die Bedingung: alles vor dem ersten Buchstaben loeschen. Gute Idee.
for oldname in [^a-zA-Z]*; do newname="`echo \"$f\" | sed 's/^[^a-zA-Z]*\([a-zA-Z].*\)/\1/'`" ^^^^^^ *ARGH*
Ich verwende normalerweise fuer Dateien 'f', also 'for f in'. Da muss hier natuerlich 'echo \"$oldname\"' hin. [..]
So, wie ich das sehe, ist irgendwie ein Fehler in dem Teil mit sed, oder? Jedenfalls scheint die Variable $newname irgendwie leer zu sein, soweit ich das beurteilen kann.
Jep. s.o. Folgendes muesste klappen: ==== for oldname in [^a-zA-ZäöüßÄÖÜ]*; do newname="`echo \"$oldname\" | \ sed 's/^[^a-zA-ZäöüßÄÖÜ]*\([a-zA-ZäöüßÄÖÜ].*\)/\1/'`"; if test "x${newname}" != "x${oldname}" && test ! -e "$newname"; then mv -v "$oldname" "$newname"; fi; done ==== Ggfs. musst du in die [] noch weitere Zeichen aufnehmen. Wobei die beim 'for' egal ist (das faengt der Vergleich oldname/newname ab), da reicht also prinzipiell auch ein 'for oldname in *; do'. Sorry wg. dem Fehler. Ich sollte wohl doch erst testen ;) -dnh --
Mag sein, ändert aber nichts am instinktiven Verhalten. Auf alle Fälle kramen Frauen gerne irgendwo rum, wenn sie Autofahren... :) -- J. Lippert Deshalb sind der Spiegel in der Sonnenblende und das Handschuhfach stets rechts eingebaut. -- R. Schwentker