Опущення розширення з знахідкою?


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

Найпростіший спосіб зробити це - передати {}оболонку на зразок оболонки shі дозволити оболонці це зробити:

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