Script - muda conteúdo de arquivos texto de iso-8859-1 para utf8 recursivamente
Publicado por Daniel Ribeiro da Silva (última atualização em 19/06/2011)
[ Hits: 7.627 ]
Homepage: http://danielbr-news.blogspot.com/
Download fix_inside_texfile_iso2utf8.sh
Como utf8 é o padrão mais adotado ultimamente e o windows tema em manter um padrão próprio (podemos chamar isso de padrão?!), resolvi fazer esse script para me ajudar no dia a dia:
A partir do diretório atual, vai corrigindo o conteúdo dos arquivos de iso-8859-1 para utf8, e em arquivos html muda também o campo charset para utf8, e nos xml muda também o campo encoding para utf8.
Vou postar também o link de outro script que muda os nomes de arquivos e diretórios de iso-8859-1 para utf8. Afinal, mudar somente o conteúdo dos arquivos não é suficiente.
[]s
Daniel Ribeiro
http://danielbr-news.blogspot.com
http://danielbr-dev.blogspot.com
#!/bin/bash
IS_OK_CHARCODE (){
for i in *
do
filetype=$(file -bi $i)
resultado_text=$( echo $filetype | grep text )
if [ "$resultado_text" == "" ] ;
then
#echo " O arquivo $i nao eh de texto:"
#echo $resultado_text
continue
fi
resultado_utf=$( echo $filetype | grep utf )
if [ "$resultado_utf" != "" ] ;
then
#echo " O arquivo $i estah ok em UTF:"
#echo $resultado_utf
continue
fi
resultado_us=$( echo $filetype | grep us-ascii )
if [ "$resultado_us" != "" ] ;
then
#echo " O arquivo $i estah ok em formato US"
#echo $resultado_us
continue
fi
resultado_iso8859=$( echo $filetype | grep 8859 )
if [ "$resultado_iso8859" != "" ] ;
then
#echo " O arquivo $i estah problematico no formato iso-8859:"
#echo $resultado_iso8859
echo "Processando $i do dir: $( pwd )"
iconv -f iso-8859-1 -t utf-8 $i > utf8file.new
mv utf8file.new $i
resultado_html=$( echo $filetype | grep htm )
if [ "$resultado_iso8859" != "" ] ;
then
sed -i -e "s/charset=iso-8859-1/charset=UTF-8/g" $i
sed -i -e "s/charset=ISO-8859-1/charset=UTF-8/g" $i
fi
resultado_xml=$( echo $filetype | grep xml )
if [ "$resultado_iso8859" != "" ] ;
then
sed -i -e "s/encoding=iso-8859-1/encoding=UTF-8/g" $i
sed -i -e "s/encoding=ISO-8859-1/encoding=UTF-8/g" $i
fi
continue
fi
#if [ $teste == "false" ] ;
#then
# echo " O arquivo $i estah em um formato imprevisto:"
# echo $filetype # pode ser binario e por ai vai
#fi
done
}
PROCESSA_DIR(){
diretorios=$( find ./ -type d )
ROOT=$( pwd )
SAVEIFS=$IFS
IFS=$(echo -en "\n\b")
for d in $diretorios
do
#echo "--- Process $d ---"
cd "$d"
IS_OK_CHARCODE
#echo "------------------"
cd "$ROOT"
done
IFS=$SAVEIFS
}
PROCESSA_DIR
Acessando o localhost pelo quanta
Conexão e Desconexão ADSL automáticas no Slackware
cofigurar a rede passando por roteador
KDE Plasma - porque pode ser a melhor opção de interface gráfica
Gentoo: detectando impressoras de rede e como fixar uma impressora por IP
Como o GNOME conseguiu o feito de ser preterido por outras interfaces gráficas
Por que sua empresa precisa de uma PKI (e como automatizar EMISSÕES de certificados via Web API)
Instalando NoMachine no Gentoo com Systemd (acesso Remoto em LAN)
Instalar Linux em notebook Sony Vaio VPCEG13EB (13)
Vou destruir sua infância:) (7)
Interface gráfica com problema (0)









