Breno, Donato,<br><br>Se a quantidade de arquivos na árvore for muito grande e/ou o nome deles for muito comprido, eventualmente você pode estourar o buffer da linha de comando (8k no Linux, se a memória não falha) no resultado do find. O jeito mais garantido de fazer isso é:<br>
<br>perl -MFile::Find -le &#39;find({wanted =&gt; sub{print if /\.fdf$/i}, no_chdir =&gt; 1 },q{.})&#39; | xargs perl -i.bak -pe &#39;s/CA/CB/g&#39;<br><br>De xargs(1):<br><br>DESCRIPTION<br>       This manual page documents the GNU version of xargs.  xargs reads items<br>
       from  the  standard  input, delimited by blanks (which can be protected<br>       with double or single quotes or a backslash) or newlines, and  executes<br>       the  command (default is /bin/echo) one or more times with any initial-<br>
       arguments followed by items read from standard input.  Blank  lines  on<br>       the standard input are ignored.<br><br>De novo, não tenho idéia de como fazer isso no Janelows. Quando sou obrigado a entrar naquilo, eu geralmente uso Cygwin para tornar a existência minimamente suportável.<br>
<br>[]s,<br>Russo<br><br><div class="gmail_quote">2009/6/9 breno <span dir="ltr">&lt;<a href="mailto:breno@rio.pm.org">breno@rio.pm.org</a>&gt;</span><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="im">2009/6/8 Donato Azevedo &lt;<a href="mailto:donatoaz@gmail.com">donatoaz@gmail.com</a>&gt;:<br>
&gt;&gt;&gt;<br>
</div><div class="im">&gt;&gt;&gt; perl -MFile::Find &quot;find( sub { print if /\.fdf$/i }, &#39;.&#39; )&quot; | perl<br>
&gt;&gt;&gt; -pi.bak -e &quot;s/CA/CB/g&quot;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; alguem sabe o que ta errado, ou mesmo se é possível fazer algo estilo<br>
&gt;&gt;&gt; golf pra isso?<br>
&gt;&gt;<br>
<br>
</div>Bom, vejo três problemas aí. O primeiro é que as respostas são dadas<br>
com print puro então vem sem espaço ou quebra de linha. Isso é<br>
facilmente resolvido com o -l. Já o segundo é q o find simples vai<br>
retornar apenas o nome do arquivo, o que impossibilita encontrá-lo<br>
pelo outro script. Para obter o caminho junto com o arquivo (e pulando<br>
linha), vc precisa substituir a primeira parte por algo como:<br>
<br>
perl -MFile::Find -le &#39;find({wanted =&gt; sub{print if /\.fdf$/i},<br>
no_chdir =&gt; 1 },q{.})&#39;<br>
<br>
O terceiro problema é que, ao alimentar por pipe um one-liner que faz<br>
-p, é como se vc quisesse modificar esse conteúdo, e não passar<br>
arquivos que deveriam ser abertos e ter o conteúdo modificado (que<br>
acredito ser o q vc quer), como ocorre qdo passamos a lista de<br>
arquivos no final.<br>
<br>
A solução mais óbvia que encontrei foi inverter a ordem dos oneliners<br>
e usando a sintaxe shell de crase `` para indicar &quot;pegue a saida disso<br>
e passe para o primeiro comando&quot;. Ficou assim:<br>
<br>
 perl -i.bak -pe &#39;s/CA/CB/g&#39; `perl -MFile::Find -le &#39;find({wanted =&gt;<br>
sub{print if /\.fdf$/i}, no_chdir =&gt; 1 },q{.})&#39;`<br>
<br>
Mas não tenho idéia de como fazer isso em win32...<br>
<br>
<br>
[]s<br>
<font color="#888888"><br>
-b<br>
</font><div><div></div><div class="h5">_______________________________________________<br>
Rio-pm mailing list<br>
<a href="mailto:Rio-pm@pm.org">Rio-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>Alexei Znamensky [russoz_gmail_com] [<a href="http://russoz.wordpress.com">russoz.wordpress.com</a>] [<a href="http://www.flickr.com/photos/alexeiz">www.flickr.com/photos/alexeiz</a>]<br>
&quot;Though we live in trying times, we&#39;re the ones who have to try&quot;<br>