上記のディレクトリに新しいディレクトリを作成するための bash 構文は何ですか?

上記のディレクトリに新しいディレクトリを作成するための bash 構文は何ですか?

私は mogrify 用のスクリプトを作成することを目指しています。mogrify コマンドは、ディレクトリ内の画像のサイズを変更し、サイズ変更された画像を、作業ディレクトリと同じ名前で、サフィックス (_a) が付いた同じディレクトリ レベルのディレクトリに配置します。

新しいディレクトリは後で別のコレクションに移動されます。次のようになります。

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

子ディレクトリで作業しているときに ../ が親ディレクトリを表すと推測していますが、ここで助けが必要です。

編集: 「n」は作業ディレクトリ名の構文に置き換える必要があります。申し訳ありませんが、3 番目のスクリプト行にもタイプミスがありました。正しくは x ではなく n です。

編集2: このスクリプトはまさに必要なことを実行し、しかも静かです。

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

正しいPWD構文を提供してくれたvgoffとcesarerivaに感謝しますhttp://www.cesareriva.com/archives/722DEST 関数を教えてくれてありがとう。

その他:

${PWD##*/}_a   

ディレクトリ名内のスペースが考慮されないため、スクリプトは失敗します。画像と同じディレクトリに空のディレクトリが作成されます。

今になって分かったのですが、$DEST にも引用符が必要です。おそらく、mkdir が名前にスペースを含むディレクトリを作成し、mogrify がファイルを適切な場所に書き込むのに役立つためです。

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

編集3: これにはスクリプトさえ必要ありません。

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

答え1

子ディレクトリで作業しているときに ../ が親ディレクトリを表すと推測していますが、ここで助けが必要です。

あなたの推測は正解です。

「n」は作業ディレクトリ名の構文に置き換える必要があります。

なるほど。その場合、pwdコマンドが役に立ちます。変数にコマンドを入力するか、$PWD変数を使用してください。

答え2

はい。親ディレクトリです。

注意すべき点は、これは bash に特有のものではないということです。これはシェルでもありません。これはファイルシステムの動作方法の一部です。

ファイルシステムには、各ディレクトリに親ディレクトリのエントリがあります。また、各ディレクトリには現在のディレクトリを表す..エントリもあります。.

関連情報