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 13:27:28 -0200
User-agent: KMail/1.9.1

flávio!

exato! o meu maior problema é relacionado ao nome do arquivo que esta com 
acentuação errada, o outro problema, é que eu tenho uma estrutura com 3000 
diretorios, sendo que esses diretorios vieram de dois servidores diferentes 
um em utf-8 e outro em iso-8859-1, aí o que pega é que se eu mudar o samba 
pra utf-8 os arquivos em iso bacgunçam, se eu mudar pra iso os arqs em utf é 
que vao bagunçar! 

talvez o fato de o comando file retornar o encoding do arquivo seja o 
responavel pela necessidade de eu forçar o FROM do script do Waldemar pra 
UTF-8... complicado isso né? rsrrs

abração 

On Thursday 11 January 2007 11:55, Flavio Junior wrote:
> Pessoal... soh um detalhe que me gerou duvida.
>
> No script inicial que o criador do topico mandou ele tentava converter o
> NOME do arquivo de UTF para ISO e não o seu conteudo (pelo menos foi isso q
> eu me lembro de ter pensado quando li).
>
> O comando file -i retorna o charset do conteudo do arquivo.. exemplo:
>
> [root@kemi ~]# LC_ALL=pt_BR.iso88591 ls -l t*
> -rw-r--r--  1 root root 0 Jan 11 11:42 tésteção
> [root@kemi ~]# LC_ALL=pt_BR.utf8 ls -l t*
> -rw-r--r--  1 root root 0 Jan 11 11:42 t?ste??o
> [root@kemi ~]#
>
> Eu entendi que esse era o tipo de problema que ele queria corrigir...
>
> Talvez fosse mais interessante voce alterar o locale desse servidor ou
> ajustar a config do samba, mas isso já é off-topic ;)
>
>
> Se falei bobeira, ignorem-me.. já faz um tempo q começou a thread.
>
>
> Flávio do Carmo Júnior
>
> On 1/11/07, Tiago Barcellos Peczenyj <address@hidden> wrote:
> >   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<andre.ti%40embalatec.com.br>>
> >
> > 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><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><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>
> >
> > <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> <
> >
> > 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-unsubscrib
> > > > >e%40yahoogrupos.com.br>
> >
> > <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> <
> >
> > 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]
>
> [As partes desta mensagem que não continham texto foram removidas]

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