Как конвертировать SVG в PNG пакетно (параллельно)

find . -name \*.svg -print0 | xargs -0 -n1 -P4 -I{} bash -c 'X={}; convert "$X" "${X%.svg}.png"'


Команда find . -name \*.svg -print0 | xargs -0 -n1 -P4 -I{} bash -c 'X={}; convert "$X" "${X%.svg}.png"' выполняет пакетную конвертацию SVG изображений в формат PNG.

Она использует команду find для поиска всех файлов с расширением .svg в текущей директории и ее поддиректориях. Затем найденные файлы передаются в команду xargs, которая выполняет команду convert для каждого файла отдельно.

Аргументы команды xargs:
-0 указывает использовать нулевой символ в качестве разделителя между файлами, чтобы избежать проблем с пробелами или специальными символами в именах файлов.
-n1 указывает передавать по одному файлу в каждой команде convert.
-P4 указывает запустить 4 параллельных процесса convert одновременно для ускорения конвертации.
-I{} указывает использовать символ {} в качестве заполнителя для замены имен файлов в команде convert.

Команда convert является частью пакета ImageMagick и используется для конвертации изображений. Она принимает два аргумента: исходное имя файла SVG и имя конечного файла PNG. С помощью ${X%.svg} мы изменяем расширение исходного файла на .png.

Альтернативой этой команде может быть использование цикла for вместо xargs, но это может занять больше времени, особенно при большом количестве файлов.

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *