Einzelnen Beitrag anzeigen
Alt 09.10.2010, 10:42   #4
colossus
Master
 
Registriert seit: 24.02.2002
Ort: Wien
Alter: 40
Beiträge: 611


Standard

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.
____________________________________
Free Software. Free Society. Better Lives.
colossus ist offline   Mit Zitat antworten