2

Я стремлюсь сделать сценарий для 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}

2 ответа2

3

Я предполагаю, что ../ обозначает родительский каталог при работе в дочернем каталоге, но мне нужна помощь здесь.

Вы угадали правильно.

"n" необходимо заменить на синтаксис для имени рабочего каталога.

Ага. В этом случае команда pwd будет вашим другом. Заполните переменную или используйте переменную $PWD

0

Да. Это родительский каталог.

Следует отметить, что это не относится к Bash. Это даже не оболочка. Это часть работы файловых систем.

Файловая система имеет запись в каждом каталоге для .. и это родительский каталог. У каждого также есть запись для . представляющий текущий каталог.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .