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

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

Re: xargs com rm e logs


From: phribbr
Subject: Re: xargs com rm e logs
Date: Fri, 11 Nov 2011 11:05:19 -0000
User-agent: eGroups-EW/0.82

Ola Julio, bom dia!

Esta opcao tambem funciona perfeitamente!

Demoro um pouco, mas entendi!!

Fiz alguns teste e vi que na verdade o "{}" eh como
uma variavel, entao posso usar um nome como VARLS ao inves de {}.

$ find /data -mtime +5 -type f | xargs -I "VARLS" bash -c "du -sh 'VARLS';ls -l 
'VARLS'" > $LOGS/removidos

Observei tambem que ele perde em desempenho para o "-fls", porque ele
faz a leitura de arquivo por arquivo.

Para entender isso, fiz um teste para renomear arquivos e funcionou
corretamente. Adicionei as extensoes .txt em todos os arquivos.

$ find /home/ph/TESTS/txt -type f | xargs -I "VARLS" bash -c "ls -l 'VARLS';mv 
'VARLS' 'VARLS'.txt; ls -l 'VARLS'.txt"

Ele mostrara o nome antigo e o novo em seguida. Na verdade foi um
'for' com o xargs. Certo???


Mais uma dica pro meu caderno!!!
Obrigado!
Paulo Henrique

--- Em address@hidden, "Julio C. Neves" <julio.neves@...> escreveu
>
> Fala Paulo Henrique,
> a opção -fls algumas vezes esbarra em alguns problemas (como nomes de
> arquivos com espaços em branco, p.ex.). Uma outra forma de fazer isso é
> usando a opção -I do xargs. Algo assim:
> 
> $ find /data -mtime +5 -type f | xargs -I{} bash -c "rm -fv '{}'; ls -l
> '{}'" > $LOGS/removidos
> 
> Neste caso, a opção -I do xargs joga para o token definido ({}) os dados
> recebidos pela entrada padrão (|). Como o xargs atua sobre uma instrução
> somente, usei o bash -c, pois por intermédio dele consigo executar o rm e o
> ls -l.
> 
> Repare que as chaves estão entre apóstrofes e, assim sendo, espaços em
> nomes de arquivos estão devidamente protegidos da interpretação do shell.
> 
> Bom isso, né? ;)
> 
> Abcs,
> Julio
> *Quer aprender tudo de Shell em 2 fins de semana?*
> *  julio.neves@... <julio.neves@...> ou  (21) 8112-9988*
> **
> *** » **julioneves1      » juliobash*
> 
> 
> 
> Em 10 de novembro de 2011 15:23, phribbr <pribeiro@...> escreveu:
> 
> > **
> >
> >
> > Valeu, funcionou!!!
> >
> > # find /data -atime +5 -type f -fls /logs/removidos.txt -print0 | xargs -0
> > rm -v
> >
> > Pior que li o man, mas nao cheguei nesta ideia.
> > Valeu mesmo!!!
> >
> > Obrigado!
> > Paulo Henrique
> >
> > --- Em address@hidden, MrBiTs <mrbits.dcf@> escreveu
> >
> > >
> > > -----BEGIN PGP SIGNED MESSAGE-----
> > > Hash: SHA256
> > >
> > > On 11/10/2011 01:45 PM, phribbr wrote:
> > > > Boa tarde, Alexandre!!!
> > > >
> > > > Na verdade era os arquivos com tempo de acesso mesmo, expliquei
> > errado, me desculpe!
> > > >
> > > > Com o xargs tem a opcao para remover os dados com espacos sim, basta
> > utilizar o -print0 para o find e o "-0" para o xargs.
> > > > #find /data - atime +5 -type f -print0 | xargs -0 rm
> > > >
> > > > O problema mesmo eh o log detalhado dos arquivos que serao removidos.
> > Tudo isso em apenas uma execucao apenas do find.
> > >
> > > Sempre falta uma leitura básica da manpage do comando. não é não ?
> > >
> > > O find tem um parâmetro -ls, que faz exatamente o que você quer e pode
> > ser utilizado junto ao -exec. Se você ainda quiser escrever
> > > o resultado num arquivo, manda um -fls no lugar do ls.
> > >
> > >
> > > - --
> > >
> > > LLAP
> > >
> > > .0. MrBiTs - mrbits.dcf@
> >
> > > ..0 GnuPG -
> > http://keyserver.fug.com.br:11371/pks/lookup?op=get&search=0x6EC818FC2B3CA5AB
> > > 000 http://www.mrbits.com.br
> > >
> > >
> > > -----BEGIN PGP SIGNATURE-----
> > > Version: GnuPG v1.4.11 (GNU/Linux)
> > >
> > > iQEcBAEBCAAGBQJOu/toAAoJEG7IGPwrPKWrDXoIAJaMBEnaEdutMUXJieUKKU5f
> > > WrLnCAIkQ7T0X0donLklTFY2PUUxEJqMn52i5LmD0an7Cv0Kj0x3+9o19UGvxHpD
> > > jfhtHMrs4lFF9tgTcNKIzUNx/gwRaogN7yOWI97wc+2ol5ui53++Z5bBSrbuK1ZF
> > > WT7TxMBwj5N5HS6SXDLsaO1HBQoiW92sTGHZyaQ3q6vvotOzHjqqNgMEiyWOUpd1
> > > 5Xpu5sJolSCgvZrgByHxw1zyf6RnWFmsib2wQ8FOCtrdbKHjVAbyX86e1YCqCo0U
> > > 9LJERaEkMt6MBL4+tq1gIINPfN5weJkZLVxKsPsZxwyCQpH0raKh4XjWG1uIbk4=
> > > =KrNB
> > > -----END PGP SIGNATURE-----
> > >
> >
> >  
> >
> 
> 
> [As partes desta mensagem que não continham texto foram removidas]
>




reply via email to

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