Alles grauslich bis falsch, weil man den Output von `ls` in Shellscripts nicht parsed.
Am ehesten wohl noch so:
Code:
for f in ./*;
do
mv -i "$f" "$(printf "%s" "${f}" \
| sed -r 's/[[:blank:]]+$//')";
done
Wuerde ich aber auch nicht empfehlen; bei unerwarteten Sonderzeichen kann einfach immer noch zu viel schiefgehen.
Ich hab vor einiger Zeit mal ein Python-Script zusammengeschmissen, um solche (und aehnliche) Problemfaelle schnell loesen zu koennen, das Ergebnis ist
sanitize.py.
Demo-Run:
Code:
colo@zealot:/tmp/spacedemo$ touch file "file " "file " "file " "someotherfile "
colo@zealot:/tmp/spacedemo$ echo * | xxd
0000000: 6669 6c65 2066 696c 6520 2066 696c 6520 file file file
0000010: 2020 6669 6c65 2020 2020 2020 2020 2020 file
0000020: 2020 736f 6d65 6f74 6865 7266 696c 6520 someotherfile
0000030: 2020 2020 2020 0a .
colo@zealot:/tmp/spacedemo$ sanitize -v --subst="" ./*
./file -> ./file.1
./file -> ./file.1.1
./file -> ./file.1.1.1
./someotherfile -> ./someotherfile
4 of 5 files renamed.
colo@zealot:/tmp/spacedemo$ echo * | xxd
0000000: 6669 6c65 2066 696c 652e 3120 6669 6c65 file file.1 file
0000010: 2e31 2e31 2066 696c 652e 312e 312e 3120 .1.1 file.1.1.1
0000020: 736f 6d65 6f74 6865 7266 696c 650a someotherfile.
Kuemmert sich auch um etwaige Kollisionen, die durch den Wegfall unerwuenschter Zeichen entstehen. Achtung, das Ding verwurstet auch einige fuer die Shell und fuer diverse Encodings problematische Sonderzeichen und macht automatisch alles Lowercase, das muesstest du, falls unerwuenscht, einfach im Source auskommentieren.