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: Fri, 3 Feb 2012 16:29:09 -0200

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
> 



reply via email to

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