3

写真をポートレートとランドスケープに分類しようとしています。jpegのサイズ寸法を出力するコマンドを思いつきました。

identify -format '%w %h\n' 1234.jpg 
1067 1600

これをbashスクリプトで使用して、すべての風景写真を別のフォルダーに移動した場合、次のようになります。

#!/bin/bash
# loop through file (this is psuedo code!!)
for f in ~/pictures/
do
 # Get the dimensions (this is the bit I have an issue with)
 identify -format '%w %h\n' $f | awk # how do I get the width and height?
 if $width > $hieght
  mv ~/pictures/$f ~/pictures/landscape/$f
 fi
done

awkのmanページを見てきましたが、構文が見つからないようです。

4

4 に答える 4

4

あなたが使用することができますarray

# WxH is a array which contains (W, H)
WxH=($(identify -format '%w %h\n' $f))
width=${WxH[0]}
height=${WxH[1]}
于 2012-04-17T08:27:01.713 に答える
3

AWKは必要ありません。このようなことをします:

identify -format '%w %h\n' $f | while read width height
do
    if [[ $width -gt $height ]]
    then
        mv ~/pictures/$f ~/pictures/landscape/$f
    fi
done
于 2012-04-17T08:32:16.350 に答える
1
format=`identify -format '%w %h\n' $f`;
height=`echo $format | awk '{print $1}'`;
width=`echo $format | awk '{print $2}'`;
于 2012-04-17T08:27:12.083 に答える
-2

Goofballs、今は「doh、明らか」のために:

# use the identify format string to print variable assignments and eval
eval $(identify -format 'width=%w; height=%h' $f)
于 2012-04-17T15:07:31.387 に答える