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


http://planeta.ubuntubrasil.org/post/1562
[Reply]
Mandou bem cara
[Reply]
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
[Reply]
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
[Reply]
Bom,
Acredito que esse comando só funcione para arquivos texto.
[Reply]
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.
[Reply]
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
[Reply]
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
[Reply]
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,
[Reply]
Virgílio
Dá uma olhada aqui http://www.guilhermejr.net/?p=15
[Reply]
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!
[Reply]
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,
[Reply]