現在ディレクトリにあるすべてのファイルの幅と高さを取得する次のbashスクリプトがあります。
ls | cat -n | while read n f; do
width=$(identify -format "%w" "$f")
height=$(identify -format "%h" "$f")
echo "$width , $height"
done
ファイル名で終わるファイルの高さ/幅を取得するには-example99.jpg
?
答え1
for filename in *-example99.jpg
do
width=$(identify -format "%w" "$filename")
height=$(identify -format "%h" "$filename")
done
答え2
ここではループは必要ありません。
identify -format "%w , %h\n" ./*-example99.jpg
(%f
ファイル名も必要に応じてフォーマットに追加してください。)
ファイルごとに2つのコマンドを実行したくない場合は、identify
次のようにすることもできます(ここksh93
または構文を使用)。bash
unset -v file width height
file=(./*-example99.jpg)
eval "$(identify -format 'width+=(%w) height+=(%h)\n' "${file[@]}")"
for ((i = 0; i < ${#file[@]}; i++)); do
printf 'File: %s (%s x %s)\n' "${file[i]}" "${width[i]}" "${height[i]}"
done
(または配列のキーをfor i in "${!file[@]}"; do...
繰り返します)。$file
これは、すべてのファイルの幅と高さが認識されると仮定し、複数の画像(アニメーションなど)を含むことができるファイル形式にはこの方法を使用しidentify
ません。gif
答え3
シンプルfind
+identify
方法:
find . -maxdepth 1 -type f -name "*-example99.jpg" -exec identify -format "%w, %h\n" {} \;
出力例:
640, 480