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

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

Remover arquivos

Script simples para ripar CDs de áudio em mp3 com uso do CDDB para nomear as faixas.

Script de instalação do Hamachi

verificar os maiores arquivos no HD

Shell Script: Script para a instalação do pureftpd


  

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