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