是否可以列出目录中像素大小大于或小于x的所有图像?我在另一个线程上找到了这个命令
find . -name '*.png' -exec file {} \; | sed 's/\(.*png\): .* \([0-9]* x [0-9]*\).*/\2 \1/' | awk 'int($1) < 250 {print}'这个命令在*.png上运行得很好,但是当我把它改为*.jpg的时候,结果就变得太疯狂了。见下文。我想将结果写入日志文件,以便以后从我的产品目录中删除这些图像。
*.png输出
50 x 50 ./data/catalog/agsquare.png
220 x 138 ./data/catalog/brickwall_@2X.png
3 x 3 ./data/catalog/dots.png
98 x 98 ./data/catalog/grid-noise.png*jpg输出(忽略像素大小,此命令明显有问题)
./data/background/fashion-shirt.jpg: JPEG image data, JFIF standard 1.01, aspect ratio, density 1x1, segment length 16, baseline, precision 8, 1920x1440, frames 3
./data/background/grey-bag.jpg: JPEG image data, JFIF standard 1.01, aspect ratio, density 1x1, segment length 16, baseline, precision 8, 1920x1280, frames 3操作系统: Ubuntu 18.04.5 LTS
发布于 2021-09-17 20:14:14
对于PNG,file输出1 x 2,但对于JPEG,输出1x2。您的命令需要空格。
取而代之的是,使用ImageMagick的identify这样的工具,它可以以独立于格式的方式完成此任务:
find . \( -name '*.jpg' -o -name '*.png' \) \
-exec identify -format '%w %h %i\n' {} + |
awk '$1 < 250'发布于 2021-09-17 20:51:41
按照从最简单到更重的顺序,您有以下几个选项:
fehexiftoolffprobe - ffmpegidentify的小朋友
根据Ubuntu package repository,您应该在Ubuntu18LTS中安装feh,这样您就可以使用:
feh -L "%f:%w:%h" *.jpg *.png示例输出
small.png:10:10
red.jpg:8:8
redhat.jpg:254:255注feh还接受—min-dimension和—max-dimension作为过滤器。因此,对于宽度大于640像素的所有图像,请使用:
feh --min-dimension 640x0 -L "%f:%w:%h" *.jpg *.png您还可以使用exiftool查找和打印高度或宽度小于100 px的图像,如下所示:
exiftool -p '$filename:$imagewidth:$imageheight' -if '$imagesize and ($imagewidth<100 or $imageheight<100)' -q *.jpg *.png示例输出
black.jpg:8:8
red.jpg:8:8
small.png:10:10如果您使用的是源自Redmond的任何“操作系统”,请将单引号替换为双引号。
请注意,与ImageMagick.相比,exiftool是一个小得多的安装
Ubuntu 18 LTS还应该包含ffmpeg和它的小伙伴ffprobe,所以您可以这样做:
ffprobe -v error -select_streams v -show_entries stream=width,height -of csv=p=0:s=x IMAGEFILE或者在ImageMagick,中使用width<100查找图像:
magick identify -format '%f:%w:%h\n' *png *jpg | awk -F: '$2<100'发布于 2021-09-17 21:14:56
多亏了另一个人,我去掉了x周围的空格,它起作用了。没有提到我不想使用任何工具,在我的服务器上找不到其他命令。
find . -name '*.jpg' -exec file {} \; | sed 's/\(.*jpg\): .* \([0-9]*x[0-9]*\).*/\2 \1/' | awk 'int($1) < 250 {print}'https://stackoverflow.com/questions/69228653
复制相似问题