hallo,
in der folgenden Nickles linux-faq habe ich folgendes hierzu gefunden:
http://www.nickles.de/go!linux/faq/index.php3?cmd=lt&t=198
for name in * ; do mv -i $name `echo $name | tr [A-ZÄÖÜ] [a-zÄÖÜ]` ; done
Leider funktioniert jenes welches nicht rekursiv.
Kann mir da jemand weiterhelfen?
Linux 15.070 Themen, 107.540 Beiträge
for file in `find . -type f`; do mv $file `echo $file | tr 'A-Z' 'a-z'`; done
vielen dank für die hilfe, leider klappt es nicht so ganz...
No such file or directory!
Lass bei deinem ersten Aufruf das '-i' und die Umlaute weg. dann geht es.
Bye, Klaus
hi Klaus,
Danke, aber ich glaube hier gibt es ein kleines Mißverständniss!
Die erste Variante funst, aber nicht rekursiv...
Ach so. Dann versuch mal folgendes:
find . | sort -r | while read file; do mv $file `dirname $file`/`basename $file | tr "[:upper:]" "[:lower:]"`;done
Das muesste klappen.
Bye, Klaus
hi Klaus,
vielen Dank für den Tipp. Hat leider auch nicht so richtig gefunst.
Meine Eingabe:
daserva 1.0 # find . | sort -r | while read file; do mv $file `dirname $file`/`basename $file | tr "[:upper:]" "[:lower:]"`;done
Folgende Fehlermeldungen:
dirname: too many arguments
mv: when moving multiple files, last argument must be a directory
mv: `.' and `././.' are the same file
Mmh, merkwuerdig. Bei mir geht es. Hast du auch exakt die Leerzeichen beachtet?
Bye, Klaus
Ja, habs per copy and paste über putty und ssh eingefügt!
