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.595 ]
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
Conversor de vídeo com opção de legenda
Adição automática dos repositórios do Google Chrome, Google Talk Plugin, Google Earth, Dro no Ubuntu
copy - copiar para a área de transferência
Script que automatiza o treinamento do SpamAssassin
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
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
Conky, alerta de temperatura alta (10)
Assisti Avatar 3: Fogo e Cinzas (3)
Duas Pasta Pessoal Aparecendo no Ubuntu 24.04.3 LTS (42)









