Hallo, Am Sat, 20 Nov 2004, Sören Wengerowsky schrieb:
Am Samstag, 20. November 2004 22:06 schrieb David Haller:
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.
[Skript1]
Ich verwende normalerweise fuer Dateien 'f', also 'for f in'. Da muss hier natuerlich 'echo \"$oldname\"' hin. Juhu, jetzt funktionierts :-)
soeren@linux:~/temp> sh script ,,13692-penguins_big.jpg" -> ,,penguins_big.jpg"
Aeh, verwendest du ,, und " um die Dateinamen zu kennzeichnen? Halte ich nicht fuer guenstig. ich nehm da entweder ' und ' oder » und «. Oder gerade bei sowas garnix.
Was ich aber nicht verstehe ist folgendes:
soeren@linux:~/temp> touch _-_-_-_test soeren@linux:~/temp> sh script soeren@linux:~/temp> ls *test _-_-_-_test soeren@linux:~/temp>
Aber: soeren@linux:~/temp> sh script ,,_-test" -> ,,test" soeren@linux:~/temp>
Kann ich nicht nachvollziehen: $ 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 echo "$oldname -> $newname"; else echo "not moving '$oldname'"; fi; done ,,_-_-_-_test -> test ,,_-_-_-_test" -> test" --foo" -> foo" _-_-_-_test -> test (die "not moving ..." hab ich hier jetzt mal weggelassen). Ups, noch ein Bug: $ 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"; else echo "not moving '$oldname'"; fi; done ,,_-_-_-_test -> test ,,_-_-_-_test" -> test" mv: Unbekannte Option »--foo"« Versuchen Sie »mv --help« für weitere Informationen. Also verwende: ==== 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" else echo "not moving '$oldname'"; fi; done ==== Bei mir funktioniert das. Ansonsten zeig mal den Ablauf mit "sh -x" -dnh -- Einen kurzen Abschnitt aus einem Buch auf einen Zettel abschreiben: Mit dem Zeigefinger der rechten Hand über den Textabschnitt fahren, mit dem Mittel- finger auf das leere Papierblatt klopfen... BTDT, mehrmals. -- A. Grolms