如何从文件夹中删除低于特定分辨率的图片

时间:2013-12-13 12:05:42

标签: shell command-line

我有一个或多或少的随机图片文件的大文件夹,我用它来显示Wallch的桌面背景。因为我注意到有些图片的分辨率太低而不能看起来很好,所以我想摆脱低于1000像素的高度。

由于我最近开始使用Ubuntu,我怀疑这可以通过命令行中的几行代码来完成,但是我很缺乏使用它并希望避免任何过于灾难性的事情,因此之前请求帮助我自己试验。

这些图片总共大约4演出,大约3000张图片,大多以.png或.jpg结尾,但有时候是.JPG,其中一些是在子文件夹中最多3个级别。

有什么建议吗?

3 个答案:

答案 0 :(得分:4)

使用convert from ImageMagick

find -name '*.jpg' -o -name '*.png' -exec \
      convert "{}" -print "%w:%h:%d/%f\n" /dev/null \; | \
      awk -vFS=: '$1<680||$2<1000{print}' | \
      xargs rm

答案 1 :(得分:3)

您可以使用imagemagick及其识别命令。 http://www.imagemagick.org/script/identify.php

例如像bash函数那样以文件名作为参数,调整minX和minY

function rmImgBySize
{
  minX=128
  miny=96
  xres=`identify -format "%[fx:w]" "$1"`
  yres=`identify -format "%[fx:h]" "$1"`
  if [ $xres -lt $minX ] || [ $yres -lt $minY ]
  then
    rm "$1"
  fi
}

export -f rmImgBySize

find /path/to/basedir/with/pictures/ -iname "*.png" -o -iname "*.jpg" -o -iname "*.jpeg" -exec bash -c 'rmImgBySize "$0"' "{}" \;

-iname告诉名称matchins应该是caseInsensitive -o tell“或”

man identify
man find

答案 2 :(得分:0)

使用identify from ImageMagick

identify -format "%w:%h:%f\n" * | awk -F : '$2<1000 {print $3}' | xargs rm

(PS:您必须在图片目录中运行此命令)