删除当前文件夹下大小小于800像素的图片

首先就是使用find来寻找所有的文件,然后使用exec来调用file命令来获取文件的信息,如果在第二列里发现了image字段,那就是打印出第一字段。

第一字段就是这个文件的路径,所以赋值给img后进入for循环体。


identify命令是ImageMagick的一个命令,它使用了format来将文件的信息提取出来形成一个类似900x900的字段,然后使用了awk的F字段来用x分开

这两个数字,并且用printf来打印出来。这里使用了printf是因为两个数字之间要用空格分开,然后使用一个小括号来整体包围这个命令。这样的结果

就将这个串赋值给SIZE变量,这个变量因为括号而变成了数组。在这后面就可以用[]来使用这个数组。


for img in `find . -type f -exec file {} \; | awk -F: '{ if ($2 ~/image/) print $1 }'`
do
SIZE=(`identify -format "%[fx:w]x%[fx:h]" $img | awk -F 'x' '{ printf ("%s %s", $1, $2) }'`)
if [ ${SIZE[0]} -lt 800 -a ${SIZE[1]} -lt 800 ]
then
FNAME=`echo $img | rev | awk -F '/' '{ print $1 }' | rev`
echo "removing $FNAME"
# remove the file
rm -f $img
fi
done


你可能感兴趣的:(删除当前文件夹下大小小于800像素的图片)