Encontre arquivos com 32 caracteres de forma recursiva em um diretório e aplique um comando

1

Eu tenho pastas e arquivos parece com isso:

/thumbs/6b0/6b029aab9ca00329cd28fd792ecf90a.jpg
/thumbs/6b0/6b029aab9ca00329cd28fd792ecf90a-s.jpg
/thumbs/d11/d11e15a72e20e14c45bd2769d763126d.jpg
/thumbs/d11/d11e15a72e20e14c45bd2769d763126d-s.jpg

E eu quero aplicar o seguinte comando aos arquivos que não têm -s em seus nomes em todos os subdiretórios da pasta thumbs.

mogrify -resize 50% -quality 85 -strip filename.jpg

Eu tenho procurado em torno de find e grep, mas não consegui descobrir como posso fazer isso.

Qualquer ajuda apreciada.

    
por user260223 16.08.2016 / 04:27

2 respostas

0
find thumbs/ -not -name "*-s.jpg" -exec mogrify -resize 50% -quality 85 -strip {} \;
    
por 16.08.2016 / 05:02
0

Para responder à pergunta no assunto:

find . -name '????????????????????????????????.jpg' -exec cmd {} \;

Para inserir esses 32 ? s, com tcsh , zsh ou bash no modo emacs , digite Alt + 3 Alt + 2 ? . Com esses shells e ksh no modo vi , insira um ? , deixe o modo de inserção com Esc e, em seguida, pressione x para cortar esse ? , e depois 32p para colá-lo 32 vezes.

Com o GNU find , você também pode fazer:

find . -regextype egrep -regex '.*/[^/]{32}\.jpg' -exec cmd {} \;
    
por 16.08.2016 / 08:51