Convertendo arquivos de uma pasta de iso-8859-1 para utf-8

Ontem recebi uns 100 arquivos que estavam codificados em iso-8859-1, como o Kubuntu usa utf-8 eles ficaram truncados onde tinha acentos, então fiz esse Shell Script abaixo para que ele convertesse todos os arquivos para mim :)

#!/bin/bash

PROGRAMA=`basename $0`
for i in *
do
        if [ "$PROGRAMA" != "$i" -a ! -d "$i" ]
        then
                iconv -f iso-8859-1 -t utf-8 $i > $i.utf
                mv $i.utf $i
        fi
done

12 Responses to “Convertendo arquivos de uma pasta de iso-8859-1 para utf-8”

  1. Tiago disse:

    Guilherme,

    Shell script é tão fantastico que vc pode fazer tudo em uma linha:

    find -type f -maxdepth 1 | xargs -i iconv -f iso-8859-1 -t utf-8 {} -o {}

    o maxdepth 1 só traz resultados do diretorio corrente. se transformar isso em uma função shell, não vai precisar fazer um if grandão desses ;-)

  2. Heber disse:

    Guilherme,
    Estou precisando muito de um script para converter meus arquivos iso8859-1 para utf-8.
    Fiquei super animado com o seu post mas na hora que fui colocar em uso:
    zumm@bistrunka:/media/dados/Música/Infantil$ convisotoutf8 Cantigas
    /usr/local/bin/convisotoutf8: line 8: $i.utf: redirecionamento ambíguo
    mv: objetivo `Orchestra.mp3′ existe, mas não é um diretório
    /usr/local/bin/convisotoutf8: line 8: $i.utf: redirecionamento ambíguo
    mv: objetivo `plait.txt’ existe, mas não é um diretório
    /usr/local/bin/convisotoutf8: line 8: $i.utf: redirecionamento ambíguo
    mv: objetivo `06.mp3′ existe, mas não é um diretório
    /usr/local/bin/convisotoutf8: line 8: $i.utf: redirecionamento ambíguo
    mv: objetivo `04.mp3′ existe, mas não é um diretório
    /usr/local/bin/convisotoutf8: line 8: $i.utf: redirecionamento ambíguo
    mv: objetivo `01.mp3′ existe, mas não é um diretório
    /usr/local/bin/convisotoutf8: line 8: $i.utf: redirecionamento ambíguo
    mv: objetivo `05.mp3′ existe, mas não é um diretório
    /usr/local/bin/convisotoutf8: line 8: $i.utf: redirecionamento ambíguo
    mv: objetivo `03.mp3′ existe, mas não é um diretório
    /usr/local/bin/convisotoutf8: line 8: $i.utf: redirecionamento ambíguo
    mv: objetivo `02.mp3′ existe, mas não é um diretório
    /usr/local/bin/convisotoutf8: line 8: $i.utf: redirecionamento ambíguo
    mv: objetivo `19.mp3′ existe, mas não é um diretório

    Você teria alguma dica?
    Obrigado

  3. Guilherme Junior disse:

    Bom,

    Acredito que esse comando só funcione para arquivos texto.

  4. Heber,

    O iconv, da forma que está sendo usado no script serve para converter a codificação do conteúdo de arquivos texto.

    O que você parece querer é converter o nome dos arquivos, para isso você precisará de um aplicativo especifico, como o convmv
    Veja se esse artigo te ajuda:
    http://enterprise.linux.com/enterprise/06/11/27/1549236.shtml?tid=47&tid=89

    Podem existir soluções ainda mais simples, se encontrar não deixe de compartilhar conosco.

  5. Descobri este comando bastante simples:

    convmv -f iso-8859-1 -t utf-8 -r *

    Ajuda do comando: http://j3e.de/linux/convmv/man/
    Código fonte em perl: http://fresh.t-systems-sfr.com/unix/src/privat2/convmv-1.10.tar.gz:a/convmv-1.10/convmv

  6. Lendo as dicas-l descobri uma dica legal para o xargs junto com o find

    ao invés de fazer
    find -type f -maxdepth 1 | xargs -i iconv -f iso-8859-1 -t utf-8 {} -o {}

    faça
    find -type f -maxdepth 1 -print0 | xargs -0 iconv -f iso-8859-1 -t utf-8 {} -o {}

    A dica é que o find ao usar o parâmetro -zero delimita os arquivos, por sua vez o xargs é
    capaz de compreender isto e assim não dará erro em arquivos com espaços no nome ou coisa parecida

  7. Virgílio disse:

    olá pessoal, valeu para as dicas, agora gostaria de saber se for possível modificar a codificação do Kubuntu par que seja iso-8859-1, porque fica complicado toda vez usar este comando quando tiver arquivos criados com outros sistema operacionais, também linux.
    Desde já agradeço,

  8. Guilherme Junior disse:

    Virgílio
    Dá uma olhada aqui http://www.guilhermejr.net/?p=15

  9. Virgílio disse:

    Valeu Guilherme! Nas pesquisas que fiz encontrei também um artigo sobre isto, acho que soluciona da mesma forma, já testei e funciona, vou experimentar sua proposta também, obrigado!

  10. Virgílio disse:

    este é o link….
    http://blog.mhavila.com.br/2006/09/24/codificacao-de-caractere-e-o-ubuntu-pt_br/
    Novamente obrigado pela atenção.
    Sds,

Leave a Reply