Man muss wohl auch noch pruefen, ob die Datei ueberhaupt umbenannt werden muss. Denn wenn $alter_Name == $neuer_Name ist, kommt eine Fehlermeldung.
Aber mit dem * habe ich hier auch keine Probleme. In welcher Shell wuerde das denn nicht alle Dateien weitergeben?
Ich tausche gleich mal alle Leerzeichen gegen _ und A-Z gegen a-z aus:
touch "Brief 10.doc" touch "Brief an Tante Martha 10.doc" touch "Brief an Tante Martha 11.doc" touch "Brief1a.doc" touch "Brief10a.doc" touch "brief_ist_klein.txt"
for F in * do new_name=`echo "$F" | sed 's/ /_/g'` new_name=`echo "$new_name" | tr A-Z a-z` [ "$F" != "$new_name" ] && mv "$F" "$new_name" [ "$F" != "$new_name" ] && echo $F "--->" $new_name done
Ausgabe: --------
Brief 10.doc ---> brief_10.doc Brief an Tante Martha 10.doc ---> brief_an_tante_martha_10.doc Brief an Tante Martha 11.doc ---> brief_an_tante_martha_11.doc Brief10a.doc ---> brief10a.doc Brief1a.doc ---> brief1a.doc
Ergebnis: ---------
brief10a.doc brief1a.doc brief_10.doc brief_an_tante_martha_10.doc brief_an_tante_martha_11.doc brief_ist_klein.txt
Auf jeden Fall kann man wohl das Problem A-Z nach a-z auch noch mit sed in einem Abwasch loesen, aber dazu bin ich jetzt zu muede.
Stefan
.