Hallo safrano,
ein kleiner Tip, um heraus zu finden, welche Zeichen dich stören, kannst du ja mal schauen, welche überhaupt (und in welcher Häufigkeit) verwendet werden mit dem Befehl
$ find | sed 's/./&\n/g' | sort | uniq -c
3907
19
1 %
7 (
7 )
18 +
1 ,
1577 -
6918 .
24003 /
3 [
2332 _
2 ~
1 »
1 –
1446 0
1816 1
...
Manchmal sehen Zeichen sehr ähnlich aus, wie "-" (x2d) und "–" (xe2 x80 x93). Dabei kannst du dir dann auch überlegen, in welches Zeichen diese konvertiert werden sollen.
Beispiel wobei Dateien mit den Zeichen "%»–" umbenannt werden sollen:
$ find -regex '.*[%»–]+.*' | sed 'h;y/%»–/_--/;x;G;s/^/mv "/;s/\n/" "/;s/$/"/'
Sorry für meine kleine "sed" Spielerei, aber das juckte mir grad in den Fingern. Mit obiger "sed" Zeichenkette bekommt man die Befehle zum Umbenennen gelistet. Wenn man am Ende ein "e" anfügt (also z.B. statt 's/$/"/' ein 's/$/"/e', wird die Umbenennung auch ausgeführt.
Falls man das "sed" nicht sofort versteht, hier eine kleine Beschreibung:
h schiebt den Dateinamen unverändert in den "hold" Bereich
y führt die Zeichenänderung gemäß Mapping-Tabelle "y/von/nach/" im "pattern" Bereich durch
x tauscht "hold" und "pattern" Bereich, damit im "pattern" der ursprüngliche Dateiname steht
G hängt den Inhalt aus "hold" an den "pattern" Bereich (OldFile\nNewFile)
1.s Am Anfang wird der Text 'mv "' eingefügt
2.s Das "\n" vom "G" wird zu einem " " gewandelt
3.s Am Ende wird ein '"' eingefügt.
e Die Zeile im "pattern" Bereich wird ausgeführt (d.h. die Umbenennung gemacht)