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: Tiago Barcellos Peczenyj
Subject: Re: [shell-script] Uso do iconv em todos os subdiretorios de um dir raiz
Date: Thu, 11 Jan 2007 10:28:07 -0200

Algumas sugestões sob forma de script

http://pastebin.com/856704

Entre outras coisas, usei case / for e coloquei mais uma opção

[]´s Tiago

On 1/11/07, andnovelli <address@hidden> wrote:
>
>   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 <wsjunior%40gmail.com>>
> # 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 <wsjunior%40gmail.com>>
> >
> > # 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<andre.ti%40embalatec.com.br>>
> 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 <andre.ti%40embalatec.com.br>
> > > 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<shell-script-unsubscribe%40yahoogrupos.com.br>
> > > ----------------------------------------------------------
> > > 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 <andre.ti%40embalatec.com.br>
> www.embalatec.com.br
>
>  
>



-- 
Tiago B Peczenyj
Linux User #405772

# cd /pub
# more beer


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

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