[Megoldva] Ékezetes fájlnevek konvertálása

Sziasztok!

Szeretnék egy menetben ékezetes és szóközös fájlneveket átkonvertálni ékezet nélküli és szóköz nélküli fájlnevekre.
A WEB-en találtam és és átalakítottam a következő script-et:


#!/bin/bash
for i in *.*; do mv "$i" "`echo $i | sed -e 's/á/a/g;s/é/e/g;s/í/i/g;s/ó/o/g;s/ö/o/g;s/ő/o/g;s/ú/u/g;s/ü/u/g;s/ű/u/g;s/Á/A/g;s/É/E/g;s/Í/I/g;s/Ó/O/g;s/Ö/O/g;s/Ő/O/g;s/Ú/U/g;s/Ü/U/g;s/Ű/U/g;s/ /_/g'`"; done

két fájllal próbáltam:
árvíztűrő tükörfúrógép.txt
ÁRVÍZTŰRŐ TÜKÖRFÚRÓGÉP.TXT

A kisbetűsre működik a nagybetűsre nem.
Az eredmény:
arvizturo_tukorfurogep.txt
ÁRVÍZTŰRŐ TÜKÖRFÚRÓGÉP.TXT

A cél amit el szeretnék érni:
arvizturo_tukorfurogep.txt
ARVIZTURO_TUKORFUROGEP.TXT

Mit csináltam rosszul? (nem értek a bash scriptekhez, ezt a script-et is csak összeollóztam több helyről)

Köszi
Levus

Hozzászólások

pl rossz a karakter kódolás

De esetleg az iconv jobb megoldás erre.

detox nem jo erre?

--
Don't Panic if you see me laughing,
that's not a bug, just a feature.

A regex jó.
Kicsit átfogalmazva a teszt is jónak tűnik:
for i in árvíztűrő tükörfúrógép ÁRVÍZTŰRŐ TÜKÖRFÚRÓGÉP; do echo "$i" "`echo $i | sed -e 's/á/a/g;s/é/e/g;s/í/i/g;s/ó/o/g;s/ö/o/g;s/ő/o/g;s/ú/u/g;s/ü/u/g;s/ű/u/g;s/Á/A/g;s/É/E/g;s/Í/I/g;s/Ó/O/g;s/Ö/O/g;s/Ő/O/g;s/Ú/U/g;s/Ü/U/g;s/Ű/U/g;s/ /_/g'`"; done
árvíztűrő arvizturo
tükörfúrógép tukorfurogep
ÁRVÍZTŰRŐ ARVIZTURO
TÜKÖRFÚRÓGÉP TUKORFUROGEP

Nekem az a tippem, hogy más karakterkódolással lehetnek a fájlok nevei, mint ahogy a shell vagy a sed kezeli.
Nálam pl. LC_ALL=en_US.UTF-8

Hogy lett megoldva?

Amúgy nem *.*, hanem *, hogy olyan fájlokra is illeszkedjen, amiknek nincs a nevében pont.

Régi thread, de azért leírom, mert pont előkerült;
A sed parancs kiváltható ezzel, és az ember szeme nem folyik ki:

sed -e 'y/áéíóöőúüűÁÉÍÓÖŐÚÜŰ /aeiooouuuAEIOOOUUU_/'