Fájlnevekben karaktercsere

Ha linux alatt fájlok nevében szeretnénk karaktereket cserélni, arra az alábbi shall nyújt megoldást.
Egyetlen szépséghibája, hogy a fájlok nevében nem lehet sorvége jel.

--------------------------------------------

#!/bin/bash
# File: filename_char.sh Author: Apáti János Date: 2008.05.12
# A $1 mappában a fájlok nevében kicseréli a $2 karaktereket $3-ra
# Pl.1) a "mappa" nevű mappában lévő fájlok nevében az "é" betűket "e"-re cseréljük
# filename_char.sh mappa é e
# Pl.2) a "mappa" nevű mappában lévő fájlok nevében az "öóő" betűket "o"-ra cseréljük
# filename_char.sh mappa '[öóő]' o

find $1 -type f|while read fnev; do
uj_fnev="${fnev//$2/$3}";
if [ "$fnev" != "$uj_fnev" ];
then mv -v "$fnev" "${fnev//$2/$3}";
fi
done

--------------------------------------------

Az alábbi shall pedig élből lecseréli a problémás karaktereket:

--------------------------------------------

#!/bin/bash
# File: filename_char_all.sh Author: Apáti János Date: 2008.05.12
# A $1 mappában a fájlok nevében kicseréli az ékezetes karaktereket, szóközöket...

find $1 -type f|while read fnev; do
uj_fnev="$fnev";
uj_fnev="${uj_fnev//[ ,!]/_}";
uj_fnev="${uj_fnev//[áäå]/a}";
uj_fnev="${uj_fnev//[ÁÄÅ]/A}";
uj_fnev="${uj_fnev//[éëĕ]/e}";
uj_fnev="${uj_fnev//[ÉËĔ]/E}";
uj_fnev="${uj_fnev//[íïĭ]/i}";
uj_fnev="${uj_fnev//[ÍÏĬ]/I}";
uj_fnev="${uj_fnev//[öóőŏ]/o}";
uj_fnev="${uj_fnev//[ÖÓŐŎ]/O}";
uj_fnev="${uj_fnev//[üúűŭ]/u}";
uj_fnev="${uj_fnev//[ÜÚŰŬ]/U}";
if [ "$fnev" != "$uj_fnev" ];
then mv -v "$fnev" "$uj_fnev";
fi
done

--------------------------------------------