Qual é a sintaxe do bash para criar um novo diretório no diretório acima?

2

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}
mozerella
fonte
Expansão de parâmetros é o que eu acho que você está procurando. Parece que ${PWD##*/} você pode repetir isso se estiver usando um shell bash para ver se ele realmente funciona.
vgoff

Respostas:

3

Estou supondo que ../ denota o diretório pai ao trabalhar em um diretório filho, mas preciso de ajuda aqui.

Você adivinhou correto.

"n" precisa ser substituído pela sintaxe do nome do diretório de trabalho.

Aha. Nesse caso, o pwdcomando será seu amigo. Preencha uma variável com ela ou use a $PWDvariável

Wesley
fonte
Sim, está correto. mas "n" precisa ser a sintaxe para obter o nome do diretório de trabalho. Desculpe, não deixei isso claro.
mozerella
então como seria a linha com mkdir, usando pwd para o diretório atual?
mozerella
${PWD##*/}deve estar exatamente onde você nestaria, com o _a depois.
perfil completo de vgoff
../${PWD##*/}_a sim, que funcionou. Estou no meio do caminho. O mogrify não funcionou até agora ao colocar imagens redimensionadas nesse diretório ../${PWD##*/}_a. @ vgoff Eu não acharia isso há muito tempo, obrigado!
mozerella
Não se esqueça de votar na resposta, se for boa. :)
vgoff
0

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.

Rich Homolka
fonte