Я стремлюсь сделать сценарий для mogrify. Команда mogrify изменяет размеры изображений в каталоге и помещает измененные изображения в каталог на том же уровне каталога, с тем же именем, что и рабочий каталог, но с суффиксом (_a).
Новый каталог будет перемещен в другую коллекцию позже. Что-то вроде этого,
#!/bin/bash
mkdir ../n_a
for file in *{.JPG|.jpg}; do mogrify -path ../n_a -resize 1200x1200 -quality 96;done
Я предполагаю, что ../ обозначает родительский каталог при работе в дочернем каталоге, но мне нужна помощь здесь.
Изменить: "N" должен быть заменен синтаксисом для имени рабочего каталога. Извините, что была опечатка, а третья строка скрипта, должен был прочитать не х
Edit2: этот скрипт делает именно то, что мне нужно, и он молчит.
#!/bin/bash
DEST="../${PWD##*/}_a"
mkdir -p $DEST
mogrify -path $DEST -resize 1200x1200 -quality 96 *.jpg *.JPG
спасибо vgoff за правильный синтаксис PWD и cesareriva http://www.cesareriva.com/archives/722 за то, что показали мне функцию DEST.
Что-то другое:
${PWD##*/}_a
не заботится о пробелах в имени каталога, и скрипт завершается ошибкой. Пустой каталог создается в том же каталоге, что и изображения.
Обнаружил это сейчас, ему тоже нужны цитаты на $ DEST, предположительно, чтобы помочь mkdir создать каталог с пробелом в имени, и mogrify записать файлы в нужное место, как это
#!/bin/bash
DEST="../${PWD##*/}_a"
mkdir -p "$DEST"
mogrify -path "$DEST" -resize 1200x1200 -quality 96 *.jpg *.JPG
Edit3: даже не нужен сценарий для этого, т.е.
mkdir ../${PWD##*/}_a && mogrify -path ../${PWD##*/}_a -resize '1200x1200>' -quality 95 *{.jpg|.JPG}