What is the bash syntax to create a new directory in the directory above?

Posted by mozerella on Super User See other posts from Super User or by mozerella
Published on 2012-11-08T22:57:03Z Indexed on 2012/11/12 11:06 UTC
Read the original article Hit count: 182

Filed under:
|
|

I aim to make a script for mogrify. The mogrify command will resize images in a directory and put the resized images into a directory on the same directory level, with the same name as the work directory, but with a suffix (_a).

The new directory will be moved to another collection later on. Something like this,

#!/bin/bash  
mkdir ../n_a
for file in *{.JPG|.jpg}; do mogrify -path ../n_a -resize 1200x1200 -quality 96;done

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

Edit: "n" needs to be replaced with the syntax for the working directory name. Sorry there was a typo as well third script line, should have read n not x

Edit2: This script does exactly what I need and it's silent.

#!/bin/bash
DEST="../${PWD##*/}_a"
mkdir -p $DEST
mogrify -path $DEST -resize 1200x1200 -quality 96 *.jpg *.JPG

thanks to vgoff for the correct PWD syntax and cesareriva http://www.cesareriva.com/archives/722 for showing me the DEST function.

Something else:

${PWD##*/}_a   

is not caring for spaces in the directory name and the script fails. An empty dir is created in the same dir as the images.

Found it out now, it needs quotations on the $DEST too, presumably to help mkdir create the dir with a space in the name, and mogrify to write the files to the right place, like this

#!/bin/bash
DEST="../${PWD##*/}_a"
mkdir -p "$DEST"
mogrify -path "$DEST" -resize 1200x1200 -quality 96 *.jpg *.JPG

© Super User or respective owner

Related posts about linux

Related posts about bash