Для пакетного преобразования изображений я использую цикл for:
for f in *.(jpg|png); do magick $f -resize 64x64\> output-folder/$f; done
обратите внимание, я использую Zsh. Если вы используете Bash, вам нужен
*.{jpg,png}, а не*.(jpg|png).
Но, может быть, есть более простой способ, предоставляемый либо ImageMagick, либо самой оболочкой? Что-то вроде этого:
# Doesn't work
magick *.{jpg,png} -resize 64x64\> output-folder/





С mogrify вот так:
mkdir OUTPUT
magick mogrify -path OUTPUT -resize 64x64\> *.jpg *.png
Да, оба должны работать нормально.
Я бы предпочел *.{jpg,png}(N), на случай, если у вас нет файлов PNG (или jpg).
@user1934428 user1934428 У вас есть ссылка, где определен этот синтаксис, пожалуйста?
Взгляните на справочную страницу zsh и найдите раздел под названием Glob Qualifiers. Квалификатор N описан как устанавливает параметр NULL_GLOB для текущего шаблона.
@user1934428 или *.(jpg|png) и разрешите nomatch поймать неудавшийся глобус
@rowboat: настройка nomatch остается в силе в этом процессе zsh до тех пор, пока она не будет сброшена снова. Использование квалификаторов glob позволяет вам в каждом конкретном случае принимать решение о том, какое поведение вы хотите. Оба подхода имеют свои преимущества.
@ user1934428 nomatch — это настройка zsh по умолчанию. Глоб, использующий |, работает как с nomatch, так и без него, поэтому мне не следовало упоминать nomatch.
@rowboat : Ах да. Но для использования | здесь вам нужно будет включить Extended_glob.
@user1934428 user1934428 Я не думаю, что расширенный глоб нужен. zsh -cx- ': (foo|bar)' кажется, работает так, как ожидалось
@rowboat: Ты прав! Да, и я также нашел документацию по этому вопросу на странице руководства zsh expn!
Спасибо, Марк. (Лично я вместо
*.jpg *.pngпредпочёл бы*.{jpg,png}.)