Você pode aproveitar o utilitário iconv
, converter uma string de uma codificação de caracteres em outra e também realizar a transliteração para um caractere semelhante, quando a codificação de destino não as tiver.
O seguinte script renomeará cada arquivo passado na linha de comando para uma versão ascii do mesmo nome. Modifique a variável input_enc
, se necessário, e execute com --no-test
como primeiro parâmetro para realmente renomear.
#!/bin/bash
input_enc="UTF-8"
test=1
if [[ == '--no-test' ]]; then
test=0
shift
else
echo "This is a simulation"
echo "run with --no-test as first parameter to really rename"
echo
fi
normalize() {
local f=""
echo "$f" | iconv -f "$input_enc" -t ASCII//TRANSLIT
}
for f; do
g="$(normalize "$f")"
if ((test)); then
echo mv -i "$f" "$g"
else
mv -i "$f" "$g"
fi
done