Ubuntu下如何修改find命令实现筛选高度小于指定像素的JPG图片
命令修改方案
你原来的命令逻辑中,sed处理后输出的第一列是宽x高格式的字符串,原先的awk 'int($1) < 200 {print}'语句会直接把第一列从左到右转整数,自动截断x后面的内容,所以取的是宽度值做判断。
要筛选高度小于200像素的图片,仅需要修改最后管道后的awk语句部分即可,修改后的完整命令如下:
find . -name '*.jpg' -exec file {} \; | sed 's/\(.*jpg\): .* \([0-9]*x[0-9]*\).*/\2 \1/' | awk '{split($1, res, "x"); if(int(res[2]) < 200) print}' >output.txt
新增的split($1, res, "x")会把宽x高格式的字符串按x分割为数组res,其中res[1]对应宽度、res[2]对应高度,判断res[2]的数值是否小于200即可完成高度筛选。
如果需要一次性筛选宽度或高度任意一项小于200的图片,也可以直接合并判断条件,不需要分开跑两次命令:
find . -name '*.jpg' -exec file {} \; | sed 's/\(.*jpg\): .* \([0-9]*x[0-9]*\).*/\2 \1/' | awk '{split($1, res, "x"); if(int(res[1]) < 200 || int(res[2]) < 200) print}' >output.txt
内容的提问来源于stack exchange,提问作者BenD
相关产品推荐
相关产品推荐

