Hallo, Am Sonntag, 21. November 2004 01:05 schrieb David Haller:
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: [..] soeren@linux:~/temp> sh script ,,13692-penguins_big.jpg" -> ,,penguins_big.jpg"
Aeh, verwendest du ,, und " um die Dateinamen zu kennzeichnen? Ja.. wo kann man das denn ändern? In der ~/.bashrc?
Halte ich nicht fuer guenstig. ich nehm da entweder ' und ' oder » und «. Oder gerade bei sowas garnix. Warum ist ,, und " ungünstig?
Was ich aber nicht verstehe ist folgendes: [Beispiel] Kann ich nicht nachvollziehen: [Beispiel]
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" Also bei mir funktioniert es jetzt auch. Der Fehler war wohl, dass ich da schon mehrere Dateien hatte, die nachher "test" heißen sollten. Das überprüft das Script wohl mit "if test "x${newname}" != "x${oldname}" && test ! -e "$newname";.." Das hatte ich gestern nicht bemerkt.
Jedenfalls funktioniert es ja jetzt. Hier nochmal die Ausgabe von sh -x. Deswegen ist mir das mit test -e auch erst aufgefallen. soeren@linux:~/temp/script-test> sh -x sh-2.05b$ ls + ls _-_-_-_test _-_-_-_-_test sh-2.05b$ 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
++ echo _-_-_-_test ++ sed 's/^[^a-zA-ZäöüßÄÖÜ]*([a-zA-ZäöüßÄÖÜ].*)/\1/' + newname=test + test xtest '!=' x_-_-_-_test + test '!' -e test + mv -v -- _-_-_-_test test ,,_-_-_-_test" -> ,,test" ++ echo _-_-_-_-_test ++ sed 's/^[^a-zA-ZäöüßÄÖÜ]*([a-zA-ZäöüßÄÖÜ].*)/\1/' + newname=test + test xtest '!=' x_-_-_-_-_test + test '!' -e test + echo 'not moving '''_-_-_-_-_test'''' not moving '_-_-_-_-_test' sh-2.05b$ ls + ls test _-_-_-_-_test sh-2.05b$ rm test + rm test sh-2.05b$ 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 ++ echo _-_-_-_-_test ++ sed 's/^[^a-zA-ZäöüßÄÖÜ]*([a-zA-ZäöüßÄÖÜ].*)/\1/' + newname=test + test xtest '!=' x_-_-_-_-_test + test '!' -e test + mv -v -- _-_-_-_-_test test ,,_-_-_-_-_test" -> ,,test" sh-2.05b$ ls + ls test Vielen Dank Gruß Sören PS: ich habe gestern schon fast 400 Dateien in ein ordentliches Format gebracht :-)