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

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

Re: [shell-script] Iniciando com Shell


From: Julio C. Neves
Subject: Re: [shell-script] Iniciando com Shell
Date: Mon, 11 Dec 2006 19:25:51 -0200

Aê pessoal,
qto à velocidade, está aqui uma prova:
$ time find . -maxdepth 1 -type f -exec grep -q asd {} \;
real    0m0.832s
user    0m0.160s
sys     0m0.040s
$ time find . -maxdepth 1 -type f | xargs grep -q asd
real    0m0.023s
user    0m0.016s
sys     0m0.008s

Qto à opção -n do xargs que o Tiago citou ela realmente existe, mas não é
necessária para eliminar o "too many parameters" do xargs. Veja como
funciona:

$ ls -1 # lê-se ls menos um. Não é menos ele.
Clusters.odt
Clusters.pdf
curso
Desktop
Examples
googleearth
google-earth
GoogleEarthLinux.bin
key.gpg.asc
num
pastor.sh
tst.sh
vmware
xpto
$ ls -1 | xargs
Clusters.odt Clusters.pdf curso Desktop Examples googleearth google-earth
GoogleEarthLinux.bin key.gpg.asc num pastor.sh tst.sh vmware xpto
$ ls -1 | xargs -n 3
Clusters.odt Clusters.pdf curso
Desktop Examples googleearth
google-earth GoogleEarthLinux.bin key.gpg.asc
num pastor.sh tst.sh
vmware xpto

Como vcs viram o xargs (que se não tiver nenhum cmd o default é o echo)
mandou tudo numa linha só, e com a opção -n 3 mandou tres por linha. Mas o
mais legal foi o seguinte (observe que este teste foi feito em uma árvore de
diretório bem densa):

$ find . -name \* | xargs > arq.tst
$ wc -l arq.tst
198 arq.tst
$ wc -w arq.tst
695104 arq.tst

Isto é o find descobriu 695.104 arquivos e o xargs gravou-os em 198 vezes,
ou seja, ele gravou 3500 nome de arquivo de cada vez e por isso ele é bem
mais veloz. Veja isso fazendo:

time find . -name \* | xargs echo > arq.tst
time find . -name \* -exec echo {} >> arq.tst \;

Mais detalhes em http://www.dicas-l.com.br/dicas-l/20050226.php e
http://www.dicas-l.com.br/dicas-l/20050227.php

Abraços,
Julio
:wq





Em 11/12/06, Rodrigo Morais <address@hidden> escreveu:
>
>   Bom, vamos ver se eu explico melhor.
> Eu tenho um diretorio do AntiVirus na qual ficam as atualizações.
> Imagina-se que seja em /home/antivirus/updates
> E quando eu entro nessa pasta
> # cd /home/antivirus/
> e executo
> # df -h
> Eu fico mais de 10min esperando o calculo para mostrar que o diretório
> possui uns 2Gb somente. Só que se eu for analisar a data dos arquivos dando
> um ls -l eu vou esperar mol tempão e ate gerar uma linha de comando para
> deletar os arquivos com mais de 30 dias eu to lascado entendeu.
> Com isso iria automatizar bastante.
>
> Acho que está ainda complicado a descrição.
> Qualquer coisa, meu msn é spyderlinux [ at ] gmail.com
>
> Att,
> SpYdErLiNuX
> www.bestlinux.com.br
>
> > ----- Original Message -----
> > From: "Julio C. Neves" <address@hidden <julio.neves%40gmail.com>>
> > To: address@hidden <shell-script%40yahoogrupos.com.br>
> > Subject: Re: [shell-script] Iniciando com Shell
> > Date: Mon, 11 Dec 2006 16:21:53 -0200
> >
> >
> > Se é para ser executado via crontab, é melhor vc tirar a interatividade
> e
> > fazer:
> >
> > find /diretorio/inicial/da/pesquisa -type f -ctime +30 | xargs rm
> >
> > Note que o find começa a pesquisar em /diretorio/inicial/da/pesquisa e a
> > partir daí, entra em todos os subdiretórios deste. É isso mesmo que vc
> quer?
> > Caso deseje limitar a profundidade de sua atuação, analise sua opção
> > -maxdepth.
> >
> > Abração,
> > Julio
> > :wq
> >
> >
> > 2006/12/11, Rodrigo Morais <address@hidden<spyderlinux%40linuxmail.org>
> >:
> > >
> > > Bom vamos la.
> > > A idéia é que eu cheque a pasta do clamav a pasta de quarentena.
> > > Eu não posso deletar dos ultimos 30 dias.
> > >
> > > find /diretorio/inicial/da/pesquisa/quarentena -type f -ctime +30 -ok
> rm
> > > {} /;
> > > Dessa forma resolveria altomaticamente deixando no Crontab ?
> > > Obrigado a todos, garanto que em breve vou estar auxiliando outras
> pessoas
> > > também.
> > >
> > > Att,
> > > SpYdErLiNuX
> > > www.bestlinux.com.br
> > >
> > > > ----- Original Message -----
> > > > From: "Otavio Salvador" <address@hidden 
> > > > <otavio%40debian.org><otavio%40debian.org>>
> > > > To: 
> > > > address@hidden<shell-script%40yahoogrupos.com.br><shell-script%40yahoogrupos.com.br
> >
> > > > Subject: Re: [shell-script] Iniciando com Shell
> > > > Date: Mon, 11 Dec 2006 13:20:52 -0200
> > > >
> > > >
> > > > "Julio C. Neves" <address@hidden <julio.neves%40gmail.com> <
> julio.neves% 40gmail.com>>
> > > writes:
> > > >
> > > > > Estou precisando muito de criar scripts para aliviar minha
> sobrecarga
> > > do
> > > > > serviço. Preciso no momento criar um shell para analisar os
> arquivos
> > > de um
> > > > > diretório e os arquivos com mais de 30 dias eu terei que deletar.
> > > > >
> > > > > find /diretorio/inicial/da/pesquisa -type f -ctime +30 -ok rm {}
> /;
> > > > > ou:
> > > > > find /diretorio/inicial/da/pesquisa -type f -ctime +30 | xargs rm
> -i
> > > >
> > > > Penso que o primeiro eh melhor pois o segundo possivelmente vah dar
> > > > estouro do tamanho da linha de comando. Principalmente se seu
> servidor
> > > > de mail possuir um alto trafego ;-)
> > > >
> > > > --
> > > > O T A V I O S A L V A D O R
> > > > ---------------------------------------------
> > > > E-mail: address@hidden <otavio%40debian.org><otavio%40debian.org> UIN: 
> > > > 5906116
> > > > GNU/Linux User: 239058 GPG ID: 49A5F855
> > > > Home Page: http://otavio.ossystems.com.br
> > > > ---------------------------------------------
> > > > "Microsoft sells you Windows ... Linux gives
> > > > you the whole house."
> > >
> > > >
> > >
> > > --
> > > _______________________________________________
> > > Get your free email from http://www.linuxmail.org
> > >
> > > Powered by Outblaze
> > >
> > >
> >
> >
> >
> > --
> > Abraços,
> > Julio
> > http://www.julioneves.com - Um livro sobre Bash completo e on-line
> > :wq
> >
> >
> > [As partes desta mensagem que não continham texto foram removidas]
>
> >
>
> --
> _______________________________________________
> Get your free email from http://www.linuxmail.org
>
> Powered by Outblaze
>
>  
>



-- 
Abraços,
Julio
http://www.julioneves.com - Um livro sobre Bash completo e on-line
:wq


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



reply via email to

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