GNU Parallel даже проще, чем для циклов, и часто быстрее:
parallel convert -resize 800x600 -- "{}" "{.}-resized.jpg" ::: *.jpg
Здесь происходит несколько вещей справа налево:
::: *.jpg
означает запуск команды для каждого файла jpg
{.}
означает вставку текущего имени файла без суффикса (.jpg
)
{}
означает вставить текущее имя файла
parallel
означает выполнение следующей команды много раз параллельно. Он выберет максимальное число параллельных операций, соответствующее количеству ядер вашего компьютера. По окончании каждого запускается следующий, пока все файлы jpg не будут преобразованы.
Запускает команду convert --resize 800x600 -- foo.jpg foo-resized.jpg
для каждого файла. --
указывает конвертировать прекратить обработку флагов, если имя файла начинается с -
.
P.S. На моем Mac установлено Homebrew , поэтому я смог установить параллельный интерфейс и конвертировать с
brew install parallel
brew install imagemagick