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

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

RES: [shell-script] find com prune


From: Emerson Domingues Souto - H2M
Subject: RES: [shell-script] find com prune
Date: Mon, 6 Feb 2012 09:07:46 -0200

Rsrsrs, é verdade .... as vezes é só uma questão de usar a lógica certa e os 
comandos certos ...


Emerson Domingues Souto
Tecnologia da Informação
Marítima Seguros S/A


> -----Mensagem original-----
> De: address@hidden [mailto:shell-
> address@hidden] Em nome de Petterson Faria
> Enviada em: sexta-feira, 3 de fevereiro de 2012 16:38
> Para: address@hidden
> Assunto: Re: [shell-script] find com prune
> 
> 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&pr
> > > o
> > > 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: shell-script-
> 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]
> 
> 
> 
> ------------------------------------
> 
> ---------------------------------------------------------------------
> 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
> 



reply via email to

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