find | while read var; do something “$var”; done

Posted by – 25/06/2009

Essa vai para a galera que scripta muito bash. É a milésima vez que tenho de repetir esse comando para alguém (na milésima-primeira eu desisto e ponho no blog para referência ;-)).

O pessoal fica estressado com nomes de arquivos com espaços, ou tentando usar xargs com mais de um comando. No loop while você pode colocar o conjunto de comandos que quiser para executar sobre a variável em questão:

bash$ find ~/photos | while read foto; do mogrify -resize 800x "$foto"; done

Simples e eficiente.

2 Comments on find | while read var; do something “$var”; done

  1. spectra says:

    @fmobus,

    Sim… eh mais “eficiente” quando vc soh tem uma operacao. O problema saum varias operacoes. Dentro do while vc pode fazer quantas operacoes quiser… Com o find -exec, somente uma.

  2. fmobus says:

    sempre preferi fazer algo como:

    find ~photos -exec mogrify resize 800x "{}" ;

    questão de gosto 😉

Leave a Reply

Your email address will not be published. Required fields are marked *