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.599 ]
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
Postfix: Configurando o Gmail como Relay (moleza)
Script para automatizar instalação do Gentoo
Como atualizar sua versão estável do Debian
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Script de montagem de chroot automatica
Atualizar Linux Mint 22.2 para 22.3 beta
Jogar games da Battle.net no Linux com Faugus Launcher
Como fazer a Instalação de aplicativos para acesso remoto ao Linux
Por que passar nas disciplinas da faculdade é ruim e ser reprovado é b... (7)
De volta para o futuro - ou melhor, para o presente (parte 2) (0)









