Bernd Brodesser schrieb am Montag den 17. April 2000:
for i in *.???; do mv "$i" $(echo $i | sed 's/ /_/g); done
Das geht bei Dateien mit einem Leerzeichen drin schief. Die werden dann nämlich als _zwei_ Dateinamen ausgewertet (schon von der for-Schleife). Das kann man auch nicht als: for i in "*.???" schreiben, dann stehen in i _alle_ Dateinamen als ein Argument drin.
Du hast das nicht getestet. Ich hatte das auch gedacht, aber for i in * funktioniert.
Wie "for i in *; ..." aufgeteilt wird, hängt vom Inhalt der Variablen IFS ab. Wenn dort auch Space enthalten ist, wird das File "foo bar" als zwei Strings geliefert. Das IMHO sicherste ist es, in IFS \000 unterzubringen und die Files mit find -print0 zu suchen. NULL ist ein Zeichen, das im Filenamen nicht vorkommen kann. Gruß Jens -- registered linux user #130250 --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com