Da ich das auch mal gebraucht habe, habe ich mir das geschrieben (bash) - das deckt zumindest bei mir fast alles ab.
Zum Schluss halt dann der Totschlagversuch lösche alle anderen verrückten Zeichen.
[src=bash]...
function correctName()
{
local _NewName="$1"
_NewName=$(echo "$_NewName" | sed -e 's/ä/ae/g')
_NewName=$(echo "$_NewName" | sed -e 's/Ä/Ae/g')
_NewName=$(echo "$_NewName" | sed -e 's/Ö/Oe/g')
_NewName=$(echo "$_NewName" | sed -e 's/ö/oe/g')
_NewName=$(echo "$_NewName" | sed -e 's/Ü/Ue/g')
_NewName=$(echo "$_NewName" | sed -e 's/ü/ue/g')
_NewName=$(echo "$_NewName" | sed -e 's/ß/ss/g')
_NewName=$(echo "$_NewName" | sed -e 's/'\''/ /g')
_NewName=$(echo "$_NewName" | sed -e 's/ \{1,\}/ /g')
_NewName=$(echo "$_NewName" | tr -cd 'a-zA-Z0-9[]# _.\-')
Result=$_NewName
}
...[/src]
Zum Schluss halt dann der Totschlagversuch lösche alle anderen verrückten Zeichen.
[src=bash]...
function correctName()
{
local _NewName="$1"
_NewName=$(echo "$_NewName" | sed -e 's/ä/ae/g')
_NewName=$(echo "$_NewName" | sed -e 's/Ä/Ae/g')
_NewName=$(echo "$_NewName" | sed -e 's/Ö/Oe/g')
_NewName=$(echo "$_NewName" | sed -e 's/ö/oe/g')
_NewName=$(echo "$_NewName" | sed -e 's/Ü/Ue/g')
_NewName=$(echo "$_NewName" | sed -e 's/ü/ue/g')
_NewName=$(echo "$_NewName" | sed -e 's/ß/ss/g')
_NewName=$(echo "$_NewName" | sed -e 's/'\''/ /g')
_NewName=$(echo "$_NewName" | sed -e 's/ \{1,\}/ /g')
_NewName=$(echo "$_NewName" | tr -cd 'a-zA-Z0-9[]# _.\-')
Result=$_NewName
}
...[/src]