3

Я конвертирую изображения в каталоге с именем foo в bar следующим образом.

$ mkdir bar
$ mogrify -path bar -negate foo/*.png

Есть ли в Imagemagick опция создания папки с параметром -path , если она не существует.

1 ответ1

4

Чтобы получить аргументы из команды mogrify и выполнить другие действия в зависимости от их содержимого, вы можете "переопределить" программу своей собственной функцией, а затем передать исходные аргументы этой функции:

mymog(){
   [[ $1 == "-path" ]] && [[ ! -d $2 ]] && mkdir "$2" 
   mogrify "$@"
}

Чтобы использовать его, просто замените mymog везде, где вы используете mogrify:

mymog -path bar -negate foo/*.png

Функция проверяет, является ли первый аргумент -path . Если да, то он идет , чтобы проверить , если второй аргумент не существующий каталог. Если это не так, то он создает этот каталог. ([[ ]] && - это просто еще один способ написать операторы if-then.) В любом случае он передает все аргументы команде mogrify .

Единственное предупреждение заключается в том, что вы должны поставить аргумент -path первым - вы не можете вставить его в другом месте строки. Вы должны быть в состоянии использовать это везде, где вы обычно используете mogrify и он просто проигнорирует часть mkdir если нет определения -path .

Чтобы сделать это доступным для ежедневного использования, добавьте эти 4 строки в файл .bash_profile или .bashrc , в зависимости от вашей операционной системы.

РЕДАКТИРОВАТЬ # 2: Новый ответ без зависимости от положения -path

function mogmod(){
    args=("$@")
    for ((i=0; i < $#; i++)) {
       if [[ ${args[$i]} = "-path" ]]
       then 
           mypath=${args[((i+1))]}
           [[ ! -d "$mypath" ]] && mkdir "$mypath" 
       fi
    }
    mogrify "$@"
}

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