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

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

Re: [shell-script] find com prune


From: Petterson Faria
Subject: Re: [shell-script] find com prune
Date: Fri, 3 Feb 2012 16:38:03 -0200

Me fez lembrar a palestra do Júlio onde ele citava que as pessoas falavam
que bash é lento, sem nunca ter programado/estudado bash HAEHUEAUAUHHAUE

Só para deixar bem claro. Não é seu caso Emerson, foi só uma recordação que
eu quis compartilhar na lista.

--
Atenciosamente,
*Petterson Faria*

*"A ciência nunca resolve um problema sem criar mais dez"
(George Bernard Shaw*)




2012/2/3 Emerson Domingues Souto - H2M <address@hidden>

> **
>
>
> Julio, boa tarde!
>
> O cmd xargs deixou o script muito mais rápido, antes ele demorava mais de
> 3 horas e agora leva menos de 15 minutos.
>
> Muitíssimo obrigado!
>
> Emerson Domingues Souto
> Tecnologia da Informação
> Marítima Seguros S/A
>
> > -----Mensagem original-----
> > De: address@hidden [mailto:shell-
> > address@hidden] Em nome de Julio C. Neves
> > Enviada em: sexta-feira, 3 de fevereiro de 2012 11:42
> > Para: address@hidden
> > Assunto: Re: [shell-script] find com prune
> >
> > Fala Emerson,
> > o estouro da boiada que está dando, não tem nada a ver com o ls. Com o
> find
> > tb daria, uma vez que isso depende da parametrização do sistema.
> >
> > No find inclusive, por ele ser recursivo e por isso gerar uma lista
> enorme de
> > arquivos, a incidência desse erro é bem maior do que em qq outro cmd.
> >
> > Justamente para evitar esse tipo de problema, foi desenvolvido o cmd
> xargs,
> > que recebe como parâmetro o cmd e seus parâmetros e o executa em seu
> > ambiente. Dessa forma, se for estourar, ele divide a lista de parâmetros
> de
> > forma a executar o cmd o menor número de vezes possível, dessa forma
> > ficando bem mais rápido que o -exec cmd {} \;. Aqui vc pode obter mais
> > detalhes sobre sua sintaxe e
> > uso<
> http://wiki.softwarelivre.org/TWikiBar/TWikiBarBirinaite#Passando_par
> > _metros_com_xargs>
> > .
> >
> > Uma forma muito semelhante e ainda por cima um pouco mais veloz que o
> > próprio xargs é fazer -exec cmd {} \+, que se não me falha a memória,
> > funciona no não GNU find.
> > Abcs,
> > Julio
> > *Já foi lançado "Bombando o
> > Shell<http://www.brasport.com.br/index.php?dispatch=products.view&pro
> > duct_id=666>
> > ". *
> > *Show **de interfaces gráficas sob Shell!*
> > *
> > *
> >
> >
> >
> > Em 3 de fevereiro de 2012 09:30, Emerson Domingues Souto - H2M <
> > address@hidden> escreveu:
> >
> > > **
> > >
> > >
> > > Oi gente, obrigado pelas dicas.
> > >
> > > Respondendo a pergunta: Sim, tem que ser o find porque eu preciso usar
> > > o find com -exec grep (preciso do grep pra documentar conteúdo desses
> > > arquivos texto que são procedures de BD Informix) As dicas passadas
> > > com ls são muito boas, tanto é que estou usando elas, mas mesmo assim
> > > ainda tenho alguns problemas com o ls, conforme segue:
> > >
> > > 1) devido a quantidade muito grande de arquivos, quando executo "ls -l
> > > *.sql" aparece a mensagem "ksh: /usr/bin/ls: 0403-027 The parameter
> > > list is too long"
> > > 2) a performance está lenta (uso o grep pra cada arquivo listado no
> > > ls)
> > >
> > > Todas as dicas que recebi sobre o find não funcionaram no AIX aqui da
> > > empresa, mas com certeza devem funcionar bem nas distribuições LINUX,
> > > por isso agradeço a atenção de todos desse grupo que é o melhor que eu
> > > já participei.
> > >
> > > Caso alguem tenha mais alguma informação pra ajudar que funcione no
> > > AIX eu fico muito agradecido, mas se não tiver jeito eu vou rodar o
> > > script com o ls mesmo, só que acredito que assim fica mais lento ....
> > >
> > >
> > > Obrigado,
> > >
> > >
> > >
> > > Emerson Domingues Souto
> > > Tecnologia da Informação
> > > Marítima Seguros S/A
> > > Fone: 11 3156-1017
> > >
> > >
> > >
> > > ________________________________
> > >
> > > De: address@hidden [mailto:
> > > address@hidden] Em nome de Moacir Souza Enviada em:
> > > quinta-feira, 2 de fevereiro de 2012 22:37
> > >
> > > Para: address@hidden
> > > Assunto: Re: [shell-script] find com prune
> > >
> > >
> > >
> > >
> > > E ainda mais,
> > >
> > > Não só os fontes estão disponíveis como a própria IBM também fornece
> > > alguns pacotes já prontos para instalações rápidas (RPM's nesse caso).
> > > Eu sou administrador Unix e evito usar esses pacotes tanto quanto
> > > posso, até porque, é muito difícil não existir outra maneira de fazer
> > > o mesmo que as ferramentas GNU fazem com seus facilitadores (como o -i
> > > do sed, que não existe no sed "puro" do AIX mas pode ser resolvido
> > > usando o esquema do arquivo temporário). Mas não me oponho à
> > > instalação deles quando é realmente necessário.
> > > Até agora você não respondeu se apenas usar o find interessa ou se
> > > quaisquer outras das soluções apresentadas que não usam ele já
> > > resolveriam seu problema. Faça o teste por aí com as dicas dadas por
> > > mim, Rodrigo, Fernando e Julio, mas se realmente nada solucionar,
> > > baixe o RPM do find e peça para seu administrador instalar o pacote. O
> > > link é esse:
> > > http://www-
> > 03.ibm.com/systems/power/software/aix/linux/toolbox/alpha.h
> > > tml
> > >
> > > Abraços,
> > > Moacir Filho
> > >
> > > 2012/2/2 Julio C. Neves <address@hidden <mailto:
> > > julio.neves%40gmail.com> >
> > >
> > > >
> > > > Peraí, deixa fazer umas colocações:
> > > >
> > > > - O ksh não é fraquinho não. É muito bom, demais, a beça... ;) O
> > > > problema do ksh e dos UNIXES, é que a evolução é muito lenta;
> > > > - O que vc queria dizer, é que o find (não GNU) é fraquinho, mas tb
> > > > não é. Eu respondi à sua questão, pq achei que resolveria o seu
> > > > problema mas tem uns 6 anos que só uso Linux e GNU find. Com certeza
> > > > tem alguma forma
> > > do
> > > > seu find fazer isso, mas não tenho mais máquina para testar.
> > > >
> > > > Por outro lado, o bash e todo o ambiente GNU têm os fontes
> > > > disponíveis, é só pedir ao seu admin para instalá-los.
> > > >
> > > > Abcs,
> > > > Julio
> > > > *Já foi lançado "Bombando o
> > > > Shell<
> > >
> > http://www.brasport.com.br/index.php?dispatch=products.view&product_i
> > d
> > > =666
> > > >
> > > > ". *
> > > > *Show **de interfaces gráficas sob Shell!*
> > > > *
> > > > *
> > > >
> > > >
> > > >
> > > > Em 2 de fevereiro de 2012 16:40, Emerson Domingues Souto - H2M <
> > > > address@hidden
> > <mailto:emersons.h2m%40maritima.com.br>
> > > > >
> > > escreveu:
> > >
> > > >
> > > > > **
> > > > >
> > > > >
> > > > > O ksh parece ser muito fraquinho mesmo ..... nem o -path ele tá
> > > aceitando:
> > > > >
> > > > > $ find . -type d -path ./dir -prune -o -print
> > > > > find: 0652-017 -path is not a valid option.
> > > > > $
> > > > > $ uname -a
> > > > > AIX VAWS01 3 4 000301544C00
> > > > >
> > > > > Tem alguma outra forma ?
> > > > >
> > > > > Emerson Domingues Souto
> > > > > Tecnologia da Informação
> > > > > Marítima Seguros S/A
> > > > > Fone: 11 3156-1017
> > > > >
> > > > >
> > > > >
> > > > > > -----Mensagem original-----
> > > > > > De: address@hidden <mailto:
> > > shell-script%40yahoogrupos.com.br>
> > > > > > [mailto:address@hidden <mailto:
> > > shell-script%40yahoogrupos.com.br> ] Em nome de Julio C. Neves
> > >
> > > > > > Enviada em: quinta-feira, 2 de fevereiro de 2012 16:31
> > > > > > Para: address@hidden <mailto:
> > > shell-script%40yahoogrupos.com.br>
> > > > > > Assunto: Re: [shell-script] find com prune
> > > > > >
> > > > > > Emerson, meus pêsames. Essa sintaxe do ksh é muito ruim e já fui
> > > > > > vítima dela muitas vezes (a do sort do UNIX ainda é pior).
> > > > > >
> > > > > > O -prune deve ser usado com o -path e com a opção -o (ou) para
> > negar.
> > > > > >
> > > > > > A brincadeira é assim: vc especifica com -path os diretórios que
> > > > > > vc quer listar e o -prune não permite a invasão desses
> > > > > > diretórios. Veja:
> > > > > >
> > > > > > $ find . -path ./dir\* -prune -print
> > > > > > ./dir1
> > > > > > ./dir
> > > > > >
> > > > > > Mas veja tb:
> > > > > >
> > > > > > $ find . -type d -print
> > > > > > .
> > > > > > ./dir1
> > > > > > ./dir
> > > > > >
> > > > > > Quase a mesma coisa, não é?
> > > > > >
> > > > > > Mas vc deve ter reparado que sob o diretório corrente, eu tenho
> > > > > > somente 2
> > > > > > diretórios: dir e dir1. Se usar a opção -o (ou) para negar
> > > > > > (seria um
> > > > > > "senão") esses diretórios, aí eu estaria listando tudo que não
> > > > > > fossem eles.
> > > > > > Assim:
> > > > > >
> > > > > > $ find . -type d -path ./dir -prune -o -print
> > > > > >
> > > > > > Nesse caso, listaria todos os arquivos do meu diretório corrente.
> > > > > >
> > > > > > A única vantagem desse tipo de construção sobre o -maxdepth é
> > > > > > que dessa forma eu posso selecionar quais diretórios eu pretendo
> > > > > > listar, independente de seus níveis e o -maxdepth só me permite
> > > > > > especificar a profundidade que o find mergulhará, independente
> > > > > > de seus diretórios.
> > > > > >
> > > > > > Abcs,
> > > > > > Julio
> > > > > > *Já foi lançado "Bombando o
> > > > > > Shell<http://www.brasport.com.br/index.php?dispatch=products.v
> > > > > > iew&product_id=666>
> > > > > > ". *
> > > > > > *Show **de interfaces gráficas sob Shell!*
> > > > > > *
> > > > > > *
> > > > > >
> > > > > >
> > > > > >
> > > > > > Em 1 de fevereiro de 2012 15:30, Emerson Domingues Souto - H2M <
> > > > > > address@hidden <mailto:
> > > emersons.h2m%40maritima.com.br> > escreveu:
> > >
> > > > > >
> > > > > > > **
> > > > > > >
> > > > > > >
> > > > > > > Estive lendo o manual e entendi que o -prune faz com que o
> > > > > > find liste
> > > > > > > os arquivos do diretório corrente, sem se aprofundar nos
> > > > > > subdiretórios
> > > > > > > (o contrário do -depth)
> > > > > > >
> > > > > > > O problema é que estou usando -prune e o find está listando
> > > > > > apenas o
> > > > > > > diretório corrente e não está listando os arquivos.
> > > > > > >
> > > > > > > O que eu preciso é que o find liste apenas os arquivos do
> > > > > > > diretório corrente, ou seja, no meu exemplo é para ele listar
> > > > > > > apenas
> > > > > > os arquivos
> > > > > > > arq1.txt e arq2.txt
> > > > > > >
> > > > > > > Alguém pode me ajudar ?
> > > > > > >
> > > > > > > Segue exemplo de comando find com -prune que eu executei e não
> > > > > > > me trouxe o resultado desejado:
> > > > > > >
> > > > > > > # pwd
> > > > > > >
> > > > > > > /tmp/TESTE
> > > > > > >
> > > > > > > # ls -l
> > > > > > >
> > > > > > > total 32
> > > > > > >
> > > > > > > -rw-r--r-- 1 sqlsp informix 71 Feb 01 14:45 arq1.txt
> > > > > > >
> > > > > > > -rw-r--r-- 1 sqlsp informix 134 Feb 01 14:45 arq2.txt
> > > > > > >
> > > > > > > drwxr-xr-x 2 sqlsp informix 512 Feb 01 14:46 dir1
> > > > > > >
> > > > > > > drwxr-xr-x 2 sqlsp informix 512 Feb 01 14:46 dir2
> > > > > > >
> > > > > > > # find .
> > > > > > >
> > > > > > > .
> > > > > > >
> > > > > > > ./arq1.txt
> > > > > > >
> > > > > > > ./arq2.txt
> > > > > > >
> > > > > > > ./dir1
> > > > > > >
> > > > > > > ./dir1/arq3.txt
> > > > > > >
> > > > > > > ./dir1/arq4.txt
> > > > > > >
> > > > > > > ./dir2
> > > > > > >
> > > > > > > ./dir2/dir5.txt
> > > > > > >
> > > > > > > # find . -prune
> > > > > > >
> > > > > > > .
> > > > > > >
> > > > > > > # uname -a
> > > > > > >
> > > > > > > AIX VAWS01 3 4 000301544C00
> > > > > > >
> > > > > > > Emerson Domingues Souto
> > > > > > >
> > > > > > > Tecnologia da Informação
> > > > > > >
> > > > > > > Marítima Seguros S/A
> > > > > > >
> > > > > > > [As partes desta mensagem que não continham texto foram
> > > > > > > removidas]
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > >
> > > > > >
> > > > > > [As partes desta mensagem que não continham texto foram
> > > > > > removidas]
> > > > > >
> > > > > >
> > > > > >
> > > > > > ------------------------------------
> > > > > >
> > > > > > ----------------------------------------------------------
> > > > > > 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<mailto:
> > > 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
> > > > > >
> > > > > >
> > > > > >
> > > > >
> > > > >
> > > >
> > > >
> > > > [As partes desta mensagem que não continham texto foram removidas]
> > > >
> > > >
> > > >
> > > > ------------------------------------
> > > >
> > > > ----------------------------------------------------------
> > > > 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 <mailto:
> > > 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
> > > >
> > > >
> > >
> > > --
> > > ==========================================
> > > Moacir da Cruz Souza Filho
> > >
> > > Analista de Sistemas: Suporte Unix Avançado Mestrando em Ciências da
> > > Computação Bacharel em Engenharia da Computação Técnico em Eletrônica
> > > Linux user #449600 ==========================================
> > >
> > >
> > >
> > >
> > > [As partes desta mensagem que não continham texto foram removidas]
> > >
> > >
> > >
> >
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> >
> >
> > ------------------------------------
> >
> > ----------------------------------------------------------
> > 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
> >
>
>  
>


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



reply via email to

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