Convertendo arquivos ISO-8859-1 para UTF-8 (codificação)

De Wiki Hackstore

Script converter.sh

#!/bin/bash

DIRETORIO=$1
LISTA="/tmp/lista-conversor.txt"

if [ -d "${DIRETORIO}" ]; then

echo -e "\nGerando lista de arquivos em \"${DIRETORIO}\" a serem analisados:\n"
find ${DIRETORIO} -type f > ${LISTA}
#-exec $DIRETORIO {} \;

while read ARQUIVO;do

        ISO_YES=$(file "$ARQUIVO"|grep '8859'|wc -l)
        if [ "$ISO_YES" -eq 1 ]; then
                echo "iso-8859 detectado em $ARQUIVO"
                iconv -f iso-8859-1 -t utf-8 "${ARQUIVO}" > "${ARQUIVO}.new" && echo -e "Arquivo ${ARQUIVO} convertido com sucesso\n"
                cp "$ARQUIVO" "${ARQUIVO}.bkp"
                mv "${ARQUIVO}.new" "${ARQUIVO}"
        fi

        ISO_YES=$(file "$ARQUIVO"|grep 'Non-ISO'|wc -l)
        if [ "$ISO_YES" -eq 1 ]; then
                echo "iso-8859 detectado em $ARQUIVO"
                iconv -f iso-8859-1 -t utf-8 "${ARQUIVO}" > "${ARQUIVO}.new" && echo -e "Arquivo ${ARQUIVO} convertido com sucesso\n"
                cp "$ARQUIVO" "${ARQUIVO}.bkp"
                mv "${ARQUIVO}.new" "${ARQUIVO}"
        fi
done < ${LISTA}

else
echo -e "Informe um diretorio\n\nEx:\n${0} <diretorio>"
fi

Utilizando o Script

Execute o script abaixo, bastando informar o diretório onde os arquivos serão convertidos:

/root/converter.sh <diretorio>


Backup

Caso ocorra algum problema na conversão, é gerada uma cópia do arquivo convertido, adicionando .bkp no fim do arquivo.

Caso tudo tenha sido OK, remova os arquivos de backup:

find <diretorio> -type f -iname *.bkp -exec rm {} \;