SSH nginx. Сжатие изображений в папке утилитой imagemagik и вложенных папках с фильтром по части имени вложенной папки

Есть сервер на котором 4096 папок в родительской папке (bitrix/upliad/iblock/...) В этих папках есть изображения очень большого размера Нашел решение как их сжать

for a in `find . -name "*.jpg" -type f`; do echo $a && convert $a -resize 1920 $a; done

Но если я его запущу в родительской папке, скрипт будет ОЧЕНЬ долго обрабатывать (в каждой папке около 100 фото) Вопрос можно ли добавить маску по части имени папки (например все папки начинающиеся на "a")


Ответы (1 шт):

Автор решения: Alex Alex

Да, можно:

find ./a* -name "*.jpg" -type f

По скорости:

  • Используй утилиту Mogrify https://www.imagemagick.org/Usage/basics/#mogrify вместо цикла for
  • GraphickMagick, наверное, будет быстрее.
  • Можно использовать parallel для загрузки всех ядер процессора. Также можно установить переменную MAGICK_THREAD_LIMIT.
  • В ImageMagick есть несколько разных функций для уменьшения размеров: resize, scale, sample (самый быстрый), thumbnial. см. https://imagemagick.org/Usage/resize/#other
  • Никогда не сжимайте таким образом сканированные или сфотографированные документы.
→ Ссылка