Como converter arquivos legados em UTF8?

3

Acho que a solução ideal para mim é um script Nautilus que executa a conversão de codificação em arquivos selecionados .

O script a seguir lê a codificação de um arquivo selecionado e executa a conversão utf8 se não for utf8, mas não consegui descobrir como fazê-lo funcionar em vários arquivos :

CHARSET="$(file -bi ""|awk -F "=" '{print }')"
if [ "$CHARSET" != utf-8 ]; then
iconv -f "$CHARSET" -t utf8 "" -c -o ".utf8"
fi
    
por Sadi 05.02.2013 / 13:21

2 respostas

5

Digamos que seu script tenha o nome convert-to-utf-8.sh . Veja como você faria isso funcionar em vários arquivos:

for filename in file1 file2 file3 ; do ./convert-to-utf-8.sh "$filename" ; done

Você poderia incorporar esse loop no próprio script, assim:

for filename in "$@"; do
    CHARSET="$(file -bi "$filename"|awk -F "=" '{print }')"
    if [ "$CHARSET" != utf-8 ]; then
        iconv -f "$CHARSET" -t utf8 "$filename" -c -o "$filename.utf8"
    fi
done

Você pode então executar o script com vários nomes de arquivo como este:

./convert-to-utf-8.sh file1 file2 file3
    
por Flimm 05.02.2013 / 13:47
2

Aqui está um Script Nautilus agradável e simples que eu consegui escrever graças a Flimm como visto na resposta acima:

#!/bin/sh
#Nautilus Script to determine encoding of selected file(s) and convert to utf8 if necessary
#
for filename in $@; do
    CHARSET="$(file -bi "$filename"|awk -F "=" '{print }')"
    if [ "$CHARSET" != utf-8 ]; then
        iconv -f "$CHARSET" -t utf8 "$filename" -c -o "$filename.utf8" &&
        mv -f "$filename.utf8" "$filename"
    fi
done
    
por Sadi 05.02.2013 / 17:02