Пропустить расширение с помощью find?


11

Мне нужно создавать эскизы из нескольких файлов .png и я хотел бы сделать это с помощью convertутилиты ImageMagicks . Чтобы рекурсивно найти все файлы, которые сами не являются миниатюрами, я использую следующий вызов (разбитый на две строки, чтобы сделать его читаемым):

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

Но это, конечно, создаст файл с именем a.png.thumb.pngпри запуске его с именем файла a.png. Как я могу удалить .pngрасширение из второго {}параметра, переданного для преобразования?

Ответы:


14

Самый простой способ сделать это состоит в том, чтобы передать {}off как в shell shи заставить это сделать:

find ... \
    -exec sh -c 'convert "$0" -thumbnail 200x200 "${0%.png}.thumb.png"' {} \;
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.