O find, sendo altamente especializado, é mais eficiente... Na minha máquina, o mesmo comando, usando "/" ao invés de "/etc", leva 5 segundos, contra 8.6 via Perl. Que fique claro: com a tabela de inodes cacheada. Ou seja: na 1-a "rodada", qqer um deles demora muuuuuuito mais por conta do acesso não-contínuo ao disco (a menos que vc tenha SSD, que ajuda).<br clear="all">
<br>ABS()<br><br>
<br><br><div class="gmail_quote">2011/1/13 "Flávio R. Lopes" <span dir="ltr"><<a href="mailto:flavio.lopes@links.inf.br">flavio.lopes@links.inf.br</a>></span><br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<div bgcolor="#ffffff" text="#000000">
Obrigado Stanislaw, valeu pela dica!<br>
Vou olhar melhor os "File Test Operators".<br>
<br>
Uma outra coisa, por curiosidade: Existe diferença de performance entre
usar:<div class="im"><br>
<br>
find /etc -mtime -1 -type f -print<br></div>
ou<div class="im"><br>
perl -MFile::Find -E 'find sub{say $File::Find::name if -f &&
1.0 > -M}, qw(/etc)'<br>
<br></div>
Pergunto isto pois dependendo do diretório, seus sub-diretórios e
números de arquivos, gostaria de saber quais das formas me retorma mais
rápido o resultado da busca.<br>
<br>
abraço,<br>
Flávio<br>
<br>
<br>
<br>
Em 13-01-2011 17:05, Stanislaw Pusep escreveu:
<div><div></div><div class="h5"><blockquote type="cite">O código Perl equivalente ao seu "find":<br>
<br>
perl -MFile::Find -E 'find sub{say $File::Find::name if -f &&
1.0 > -M}, qw(/etc)'<br>
<br>
Trocando em miúdos, o File::Find funciona por meio de um callback: para
cada arquivo encontrado, ele chama uma função que você define (no caso,
usei uma anônima). E para cada diretório "explorado", o find() dá um
chdir(). Dentro da função chamada, a variável $_ recebe o nome do
arquivo.<br>
<br>
ABS()<br>
<br>
<br>
<br>
<div class="gmail_quote">2011/1/13 "Flávio R. Lopes" <span dir="ltr"><<a href="mailto:flavio.lopes@links.inf.br" target="_blank">flavio.lopes@links.inf.br</a>></span><br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Boa
tarde pessoal.<br>
<br>
Preciso fazer uma buscar no meu sistema por arquivos que foram criados
ou modificados em determinado período.<br>
Por exemplo, no meu terminal se eu digitar: "find /etc -mtime -1 -type
f -print" me listar os arquivos modificados no dia anterior.<br>
<br>
Estive dando uma olhada no módulo File::Find, mas acho que não estou
entendendo direito.<br>
<br>
O que posso usar para fazer esta busca?<br>
<br>
abraço,<br>
Flávio<br>
=begin disclaimer<br>
Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org" target="_blank">SaoPaulo-pm@pm.org</a><br>
L<<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>><br>
=end disclaimer<br>
</blockquote>
</div>
<br>
<pre><fieldset></fieldset>
=begin disclaimer
Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a>
SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org" target="_blank">SaoPaulo-pm@pm.org</a>
L<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank"><http://mail.pm.org/mailman/listinfo/saopaulo-pm></a>
=end disclaimer
</pre>
</blockquote>
<br>
</div></div></div>
<br>=begin disclaimer<br>
Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
L<<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>><br>
=end disclaimer<br>
<br></blockquote></div><br>