Script - muda nomes de arquivos de iso-8859-1 para utf8 recursivamente

Publicado por Daniel Ribeiro da Silva (última atualização em 19/06/2011)

[ Hits: 5.468 ]

Homepage: http://danielbr-news.blogspot.com/

Download fix_filename_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 nomes de diretórios e arquivos de iso-8859-1 para utf8.
Pode ser necessário rodar mais de uma vez, mas funciona que é uma beleza.

Vou postar também o link de outro script que muda o conteúdo de  iso-8859-1 para utf8 em arquivos de texto, html e xml. Afinal, mudar somente o nome dos arquivos não é suficiente.

[]s
Daniel Ribeiro
http://danielbr-news.blogspot.com
http://danielbr-dev.blogspot.com

  



Esconder código-fonte

#!/bin/bash

CONVERTER (){

      for i in *
         do
               #novonome=$(echo "$i" | iconv -f iso-8859-1 -t utf-8 | tr ' ' '_' ) | \
               #tr '[:upper:]' '[:lower:]')

      resultado_isutf8=$( isutf8 "$i" | grep false )
      if [ "$resultado_isutf8" == "" ]
      then
         continue
      fi

          novonome=$(echo "$i" | iconv -f iso-8859-1 -t utf-8 )
               if [ "$novonome" != "$i" ] ; 
               then
                 echo "   Renomeando \"$i\" para \"$novonome\"... em $( pwd )"
                 mv "$i" "$novonome"
               fi
        done
}

PROCESSA_DIR(){
        
        diretorios=$( find ./ -type d )
        #ROOT=$( pwd | sed 's/\ /\\\ /g' )
   ROOT=$( pwd )       
   
   SAVEIFS=$IFS
   IFS=$(echo -en "\n\b")
        for d in $diretorios
        do
      dir=$d
      
      resultado_isutf8=$( isutf8 "$d" | grep false )
      if [ "$resultado_isutf8" != "" ]
                then
         count=0
         SAVEIFS2=$IFS
         IFS=$(echo -en "/")
         for t in $d
         do
            #echo "Parte: $t"
            novonome=$t
            
            resultado_isutf8=$( isutf8 "$t" | grep false )
            if [ "$resultado_isutf8" != "" ]
            then
               novonome=$(echo "$t" | iconv -f iso-8859-1 -t utf-8 )
            fi
            
            nomes[$count]=$novonome
            
            count=`expr $count + 1`
         done
         IFS=$SAVEIFS2
                        
         novonome_final=""
         count2=0
         while [ $count2 -lt $count ]
         do
            novonome_final=$( echo "$novonome_final""${nomes[count2]}""/" )
            
            count2=`expr $count2 + 1`
         done
         
         dir=$novonome_final
                fi

                #echo "--- Process $dir ---"
      #dir=$( echo "$d" | sed 's/\ /\\\ /g' )
      cd "$dir"
                CONVERTER
                #echo "------------------"
                cd "$ROOT"
        done
   IFS=$SAVEIFS
}

PROCESSA_DIR

Scripts recomendados

Kronos - Sincronização de arquivos remotos

Screenserver no modo texto - versão 1

Script para softwares de rede

4net.sh - Calcula velocidade de transmissão na rede

Fazendo Backup de arquivos de micros em redes.


  

Comentários


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts