Fork me on GitHub

find | while read var; do something "$var"; done 2

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.

Comments

Leave a response

  1. fmobusJune 30, 2009 @ 11:49 AM

    sempre preferi fazer algo como:

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

    questão de gosto ;)

  2. spectraJuly 01, 2009 @ 10:12 AM

    @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.