Omitir extensão com a localização?

11

Preciso criar miniaturas a partir de vários arquivos .png e gostaria de fazer isso usando o convertutilitário ImageMagicks . Para localizar recursivamente todos os arquivos que não são miniaturas, estou usando a seguinte chamada (dividida em duas linhas para facilitar a leitura):

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

Mas isso obviamente criaria um arquivo chamado a.png.thumb.pngao executá-lo em um arquivo chamado a.png. Como remover a .pngextensão do segundo {}parâmetro passado para converter?

Marcus Riemer
fonte

Respostas:

14

A maneira mais fácil de fazer isso é passar o {}shell para um shell como she fazer com que o shell faça isso:

find ... \
    -exec sh -c 'convert "$0" -thumbnail 200x200 "${0%.png}.thumb.png"' {} \;
jw013
fonte