使用查找省略扩展名?

Mar*_*mer 12 find imagemagick

我需要从多个 .png 文件创建缩略图,并希望使用 ImageMagicksconvert实用程序来执行此操作。为了递归地查找所有不是缩略图的文件,我使用了以下调用(分为两行以使其可读):

find . -type f -name "*.png" -not -name "*thumb.png*" \
  -exec convert {} -thumbnail 200x200 {}.thumb.png \;`
Run Code Online (Sandbox Code Playgroud)

但这当然a.png.thumb.png会在名为a.png. 如何.png从{}传递给转换的第二个参数中删除扩展名?

jw0*_*013 15

最简单的方法是将{}off 传递给 shellsh并让 shell 执行它:

find ... \
    -exec sh -c 'convert "$0" -thumbnail 200x200 "${0%.png}.thumb.png"' {} \;
Run Code Online (Sandbox Code Playgroud)