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

2

Eu pretendo fazer um script para o mogrify. O comando mogrify redimensionará imagens em um diretório e colocará as imagens redimensionadas 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

Eu estou supondo ../ 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 também terceira linha de script, deveria ter lido 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 ao vgoff pela sintaxe correta do PWD e pelo link do cesareriva por me mostrar a função DEST.

Outra coisa:

${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 das imagens.

Descobri agora, ele precisa de citações no $ DEST também, presumivelmente para ajudar o mkdir a criar o diretório com um espaço no nome e a organizar 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

Editar3: Nem precisa de um script para isso, ou seja,

mkdir ../${PWD##*/}_a && mogrify -path ../${PWD##*/}_a -resize '1200x1200>' -quality 95 *{.jpg|.JPG}
    
por mozerella 08.11.2012 / 23:57

2 respostas

3

I'm guessing ../ denotes the parent dir when working in a child directory, but I need help here.

Você adivinhou correto.

"n" needs to be replaced with the syntax for the working directory name.

Aha. Nesse caso, o comando pwd será seu amigo. Preencher uma variável com ela ou usar a variável $PWD

    
por 09.11.2012 / 00:04
0

Sim. É o diretório pai.

Uma nota é que isso não é específico para o bash. Não é mesmo shell. Faz parte da maneira como os sistemas de arquivos funcionam.

O sistema de arquivos possui uma entrada em cada diretório para .. e esse é o diretório pai. Cada um também tem uma entrada para . representando o diretório atual.

    
por 09.11.2012 / 00:11