Bash脚本在pixelWidth之后对JPEG进行排序

时间:2012-01-11 12:59:21

标签: bash

我正在尝试将Mac上的文件夹与数百个jpgs排序到单独的文件夹中 在pixelWidth/usr/bin/sips之后。当我运行脚本时,它显示了一个 Error 4: no file was specified。变量$f在第一行是空的?
我认为for f in *jpg中的“f”在文件循环时引用了文件。

imgWid=$( /usr/bin/sips -g pixelWidth $f | sed -n 2p | cut -d":" -f2- )  

for f in *jpg; do if [ "$1" == "$imgWid" ]; then; mv $f $dir1 2>/dev/null; fi; done  

如果我能解决这个问题,我将不胜感激。

2 个答案:

答案 0 :(得分:2)

$()在指定的位置运行命令。 (所以第1行),$f仅在循环中定义(第3行)。

也许:

function determineImageWidth()
{
    /usr/bin/sips -g pixelWidth $1 | sed -n 2p | cut -dj":" -f2-
}

for f in *.jpg
do
    width=$(determineImageWidth $f)
    if [ -n $width ] 
    then
        mkdir -p $width
        mv $f $width/
    else
        echo "Can't determine the width for $f"
    fi
done

答案 1 :(得分:0)

您没有在脚本的第一行指定$ f。据我所知,它只是在for循环中指定的。 您可能希望在第一行中将$ f更改为$ 1,以使用给予脚本的参数。