cria o diretório se ele não existir com o comando 'mogrify -path'

3

Eu converto imagens em um diretório chamado foo to bar assim.

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

Existe uma opção no Imagemagick que cria uma pasta com a opção -path , se ela não existir.

    
por ironsand 15.09.2013 / 23:41

1 resposta

4

Para obter argumentos do comando mogrify e fazer outras ações com base em seu conteúdo, você pode "substituir" o programa com uma função própria e, em seguida, passar os argumentos originais para a função:

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

Para usá-lo, basta substituir mymog onde quer que você usaria mogrify :

mymog -path bar -negate foo/*.png

A função testa para ver se o primeiro argumento é -path . Em caso afirmativo, ele continuará testando se o segundo argumento não é um diretório existente. Se não for, então cria esse diretório. (O [[ ]] && é apenas outra maneira de escrever instruções if-then.) Em qualquer um dos casos , ele passa todos os argumentos para o comando mogrify .

O único aviso é que você tem que colocar o argumento -path primeiro - você não pode colocá-lo em outro lugar na linha. Você deve poder usar isso onde quer que você usaria normalmente mogrify e ele apenas ignorará a mkdir part se não houver nenhuma definição -path .

Para que isso esteja disponível no seu uso diário, adicione essas quatro linhas ao arquivo .bash_profile ou .bashrc , dependendo do sistema operacional.

EDIT # 2: Nova resposta sem dependência da posição de -path

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