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: Julio C. Neves
Subject: Re: [shell-script] find com prune
Date: Fri, 3 Feb 2012 11:41:54 -0200

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&product_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.html
>
> 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_id=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]



reply via email to

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