Omissão de extensão com find?

11

Eu preciso criar miniaturas de vários arquivos .png e gostaria de fazer isso usando o ImageMagicks convert utility. Para encontrar recursivamente todos os arquivos que não são miniaturas, estou usando a seguinte chamada (dividida em duas linhas para torná-la legível):

find . -type f -name "*.png" -not -name "*thumb.png*" \
  -exec convert {} -thumbnail 200x200 {}.thumb.png \;'

Mas isso, é claro, criaria um arquivo chamado a.png.thumb.png ao executá-lo em um arquivo chamado a.png . Como eu poderia remover a extensão .png do segundo parâmetro {} passado para converter?

    
por Marcus Riemer 17.01.2013 / 19:53

1 resposta

14

A maneira mais fácil de fazer isso é passar o {} off para um shell como sh e fazer o shell fazer isso:

find ... \
    -exec sh -c 'convert "$0" -thumbnail 200x200 "${0%.png}.thumb.png"' {} \;
    
por 17.01.2013 / 20:41