Я хочу сделать скрипт для mogrify. Команда mogrify изменит размер изображений в каталоге и поместит измененные изображения в каталог на том же уровне каталога, с тем же именем, что и рабочий каталог, но с суффиксом (_a).
Новый каталог будет позже перемещен в другую коллекцию. Что-то вроде этого,
#!/bin/bash
mkdir ../n_a
for file in *{.JPG|.jpg}; do mogrify -path ../n_a -resize 1200x1200 -quality 96;done
Я предполагаю, что ../ обозначает родительский каталог при работе в дочернем каталоге, но здесь мне нужна помощь.
Редактировать: "n" нужно заменить на синтаксис для имени рабочего каталога. Извините, была опечатка, а также третья строка скрипта, должно было быть n, а не x
Редактирование 2: Этот скрипт делает именно то, что мне нужно, и он бесшумный.
#!/bin/bash
DEST="../${PWD##*/}_a"
mkdir -p $DEST
mogrify -path $DEST -resize 1200x1200 -quality 96 *.jpg *.JPG
спасибо vgoff за правильный синтаксис PWD и cesarerivahttp://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
Редактировать 3: Для этого даже не нужен сценарий, т.е.
mkdir ../${PWD##*/}_a && mogrify -path ../${PWD##*/}_a -resize '1200x1200>' -quality 95 *{.jpg|.JPG}
решение1
Я предполагаю, что ../ обозначает родительский каталог при работе в дочернем каталоге, но здесь мне нужна помощь.
Вы угадали правильно.
«n» необходимо заменить на синтаксис имени рабочего каталога.
Ага. В таком случае pwd
команда будет вашим другом. Заполните ею переменную или используйте $PWD
переменную
решение2
Да. Это родительский каталог.
Одно замечание: это не относится только к bash. Это даже не оболочка. Это часть работы файловых систем.
Файловая система имеет запись в каждом каталоге для ..
и это родительский каталог. У каждого также есть запись для .
представления текущего каталога.