Hallo an alle, ich habe hier ein Problem mit einem Script. Er soll Dateinamen die nicht Linux konform sind umbenennen. Also Leerzeichen zu untersrichen, umlaute zu ae ue usw.
Ich habe mir den Script mit Copy&Paste von einer Seite Kopiert http://www.sax.de/unix-stammtisch/docs/misc/shell.html
Leider läuft er nicht 😢
Hier erst mal der Script (deNT)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #!/bin/bash # rename files containing control characters and umlauts in their name # (C) Reinhard Wobst, @(#) 7.Apr 17:38 typeset -i n find . -print | while read fn do replace="$(echo -n "$fn" | tr '[\001-\040]' '[_*]')" replace="$(echo "$replace" | sed -e 's-ä-ae-g' -e 's-ö-oe-g' -e 's-ü-ue-g' \ -e 's-Ä-Ae-g' -e 's-Ö-Oe-g' -e 's-Ü-Ue-g' \ -e 's-ß-ss-g' )" [ "$replace" = "$fn" ] && continue [ -a "$replace" ] && { n=0 while [ -a "$replace$n" ] ; do let n+=1; done replace="$replace$n" } echo renaming \""$fn\"" to \""$replace\"" mv "$fn" "$replace" done | cat -vt | tee ${1:-.deNTprot} |
Beim Ausführen des Scripts bekomme ich einen Syntaxfeler:
/usr/bin/deNT: Zeile 14: Syntaxfehler beim unerwarteten Wort `do' /usr/bin/deNT: Zeile 14: `[ -a "$replace" ] && { n=0 while [ -a "$replace$n" ] ; do let n+=1; done replace="$replace$n" }'
Leider kenne ich mich mit Skripten so gut wie gar nicht aus und sehe den Fehler nicht. Ich würde mich wirklich darüber freuen wenn mir jemand dabei helfen würde.
Gruß dragnod0