Eu pretendo fazer um script para mogrificar. O comando mogrify redimensiona imagens em um diretório e as coloca em um diretório no mesmo nível de diretório, com o mesmo nome do diretório de trabalho, mas com um sufixo (_a).
O novo diretório será movido para outra coleção posteriormente. Algo assim,
#!/bin/bash
mkdir ../n_a
for file in *{.JPG|.jpg}; do mogrify -path ../n_a -resize 1200x1200 -quality 96;done
Estou supondo que ../ denota o diretório pai ao trabalhar em um diretório filho, mas preciso de ajuda aqui.
Editar: "n" precisa ser substituído pela sintaxe do nome do diretório de trabalho. Desculpe, houve um erro de digitação, bem como terceira linha de script, deveria ter lido n não x
Edit2: Este script faz exatamente o que eu preciso e é silencioso.
#!/bin/bash
DEST="../${PWD##*/}_a"
mkdir -p $DEST
mogrify -path $DEST -resize 1200x1200 -quality 96 *.jpg *.JPG
obrigado a vgoff pela sintaxe correta da PWD e cesareriva http://www.cesareriva.com/archives/722 por me mostrar a função DEST.
Algo mais:
${PWD##*/}_a
não está cuidando de espaços no nome do diretório e o script falha. Um diretório vazio é criado no mesmo diretório que as imagens.
Descobri agora, ele também precisa de cotações no $ DEST, provavelmente para ajudar o mkdir a criar o diretório com um espaço no nome e mogrify para gravar os arquivos no lugar certo, como este
#!/bin/bash
DEST="../${PWD##*/}_a"
mkdir -p "$DEST"
mogrify -path "$DEST" -resize 1200x1200 -quality 96 *.jpg *.JPG
Edit3: Nem precisa de um script para isso, ou seja,
mkdir ../${PWD##*/}_a && mogrify -path ../${PWD##*/}_a -resize '1200x1200>' -quality 95 *{.jpg|.JPG}
${PWD##*/}
você pode repetir isso se estiver usando um shell bash para ver se ele realmente funciona.Respostas:
Você adivinhou correto.
Aha. Nesse caso, o
pwd
comando será seu amigo. Preencha uma variável com ela ou use a$PWD
variávelfonte
${PWD##*/}
deve estar exatamente onde vocên
estaria, com o _a depois.Sim. É o diretório pai.
Uma observação é que isso não é específico para o bash. Nem é concha. É parte da maneira como os sistemas de arquivos funcionam.
O sistema de arquivos tem uma entrada em cada diretório para
..
e esse é o diretório pai. Cada um também possui uma entrada para.
representar o diretório atual.fonte