私は 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 に特有のものではないということです。これはシェルでもありません。これはファイルシステムの動作方法の一部です。
ファイルシステムには、各ディレクトリに親ディレクトリのエントリがあります。また、各ディレクトリには現在のディレクトリを表す..
エントリもあります。.