shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Uso do iconv em todos os subdiretorios de um dir raiz


From: andnovelli
Subject: Re: [shell-script] Uso do iconv em todos os subdiretorios de um dir raiz
Date: Thu, 11 Jan 2007 08:10:43 -0200
User-agent: KMail/1.9.1

Olá amigos! 

Primeiramente obrigado pela força que todos estão dando!

Waldemar!

Eu dei uma olhada no seu script e achei algumas coisas que eu deveria mudar 
mas nao estou muito certo ok? por isso vou colocar o script com as minhas 
alterações para que voce possa me dar mais um help se possivel! 

Vamos às batatas:

#!/bin/bash
#  Script para conversão de encoding
# | Uso: ./toutf8 diretório
# | Waldemar Silva Júnior <address@hidden>
# Variáveis utilizadas no script
TO=ISO8859-1                ##Este é o charset que eu quero colocar
DIR=$1
# Conversão
find $DIR -type f | while read i;
do
        ARQ=`echo $i`
        TPARQ=`file -i ${i} | awk {'print $3'} | tr ":" " " | sed
's/charset\=//g'`        ##coloquei essa linha junto com a de cima
        if [ $TPARQ != ISO8859-1 ]; then  ## eu entendi que o script esta 
testando se o tipo de arquivo é diferente de ISO8859-1 e o parametro -a 
$TPARQ != us-ascii eu retirei pq quero que todos estejam em ISO 8859, fiz 
certo ? 
 
                FROM=$TPARQ
                        ICONV="iconv -f $FROM -t $TO"
                        echo -n "Alterando arquivo: " $ARQ " Tipo: " $TPARQ
                        cp $ARQ $ARQ.bak
                        $ICONV $ARQ.bak -o $ARQ
                        rm $ARQ.bak
                echo
                else
                        echo -n " Ignorando arquivo: " $ARQ " Tipo: " $TPARQ
                        echo
                        fi
done

colocando esse escript pra rodar eu recebo um erro na linha 13 (retirei todas 
as linhas em branco e os MEUS comentarios, deixando apenas os creditos do 
cabeçalho), e o script ignora todos os arquivos.

o que pode estar acontecendo ? 

abaixo o erro: 

 Ignorando arquivo:  aline/coisas/DANIEL SERV/Daniel/Referencias/114_g.jpg  
Tipo:  cannot cannot
./nconv.sh: line 12: [: too many arguments


Agradeço desde já a sua grande ajuda! 
André! 

On Wednesday 10 January 2007 11:14, Waldemar wrote:
> Olá André,
>
> Recentemente eu tive que fazer um script para este tipo de conversão aqui
> no meu trabalho. Bom, segue aí o que eu fiz aqui.. Funciona recursivamente
> e você só vai precisar fazer alguns ajustes aí pras suas necessidades. Este
> aí recebe um diretório como parâmetro e verifica o encoding de todos os
> arquivos que encontra, se este for diferente de utf-8 ou us-ascii ele
> converte para utf-8 e exibe na tela aqueles arquivos que são modificados e
> aqueles que são ignorados. Sei que pode estar mal elaborado, mas funcionou
> para as minhas necessidades. Espero que lhe seja útil de alguma maneira.
>
> #!/bin/bash
> #  Script para conversão de encoding
> #  Uso: ./toutf8 diretório
> #  Waldemar Silva Júnior <address@hidden>
>
> # Variáveis utilizadas no script
>
> TO=UTF-8
> DIR=$1
>
> # Conversão
>
> find $DIR -type f | while read i;
> do
>         ARQ=`echo $i`
>         TPARQ=`file -i ${i} | awk {'print $3'} | tr ":" " " | sed
> 's/charset\=//g'`
>
>         if [ $TPARQ != utf-8 -a $TPARQ != us-ascii ]; then
>
>                 FROM=$TPARQ
>                 ICONV="iconv -f $FROM -t $TO"
>
>                 echo -n "Alterando arquivo: " $ARQ " Tipo: " $TPARQ
>                 cp $ARQ $ARQ.bak
>                 $ICONV $ARQ.bak -o $ARQ
>                 rm $ARQ.bak
>         echo
>         else
>                 echo -n " Ignorando arquivo: " $ARQ " Tipo: " $TPARQ
>                 echo
>
>         fi
> done
>
> Em 10/01/07, andnovelli <address@hidden> escreveu:
> > Olá lista!
> >
> > estou com um pequeno probleminha com uma partição que contem arquivos
> > compartilhados pelo samba,  estes arquivos estao com os nomes em UTF-8 e
> > eu
> > preciso Tê-los em ISO 8859-1, comecei a fazer a conversão com o iconv
> > diretorio por diretorio, mas este trabalho começou a dar no pé, ai pensei
> > em
> > fazer um script que rode em todos os subdiretorios, e convertendo os
> > arquivos, mas ai o bicho ta pegando, estou tendo uns erros e nao sei como
> > posso acertar isso!
> >
> > vejam:
> >
> > tenho o seguinte shell em /usr/sbin :
> > arquivo convauto
> >
> > #!/bin/bash
> > novo="`echo $1 | iconv -f UTF-8 -t ISO-8859-1`"; if [ "$novo" != "$1" ] ;
> > then
> > mv "$1" "$novo"; fi
> >
> > para rodar ele em todos os subdirs eu faço assim:
> >
> > find ./ -type f -exec convauto {} \;
> >
> > mas nao esta funcionando direito, ele me gera uma série de erros falando
> > que o
> > arquivo ou dir nao foi encontrado.
> >
> >
> > alguém tem alguma ideia de como posso fazer isso funcionar?
> >
> > abração!!
> >
> >
> >
> > --
> > Andre Novelli
> > Depto de TI
> > +55 11 5534.0017
> > address@hidden
> > www.embalatec.com.br
> >
> >
> > ---------------------------------------------------------------------
> > Esta lista não admite a abordagem de outras liguagens de programação,
> > como perl, C etc. Quem insistir em não seguir esta regra será moderado
> > sem prévio aviso.
> > ---------------------------------------------------------------------
> > Sair da lista: address@hidden
> > ---------------------------------------------------------------------
> > Esta lista é moderada de acordo com o previsto em
> > http://www.listas-discussao.cjb.net
> > ---------------------------------------------------------------------
> > Servidor Newsgroup da lista: news.gmane.org
> > Grupo: gmane.org.user-groups.programming.shell.brazil
> >
> >
> > Links do Yahoo! Grupos

-- 
Andre Novelli
Depto de TI
+55 11 5534.0017
address@hidden
www.embalatec.com.br


reply via email to

[Prev in Thread] Current Thread [Next in Thread]