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.217 ]

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

  



Esconder código-fonte

#!/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

Scripts recomendados

Alce - Alternativa ao Cowsay

Usando Shell para incluir múltiplos usuários no Windows

Gzipar arquivos com determinadas extensões

Instalação dos principais programas para um usuário comum

sys_info - exibe o status do sistema


  

Comentários
[1] Comentário enviado por dados.linux em 19/06/2011 - 20:38h

Como prometido o link para o outro script complementar:
http://www.vivaolinux.com.br/script/Script-muda-nomes-de-arquivos-de-iso88591-para-utf8-recursivamen...


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts