【发布时间】:2014-05-10 05:03:05
【问题描述】:
我需要列出一个文件夹及其子文件夹中的所有图像,具有一定的大小,比如所有 320x200 的图像,我想我需要做ls -R *.png 然后将输出传递给其他一些过滤图像的命令这么大,我的命令行技能是池,有人可以帮忙吗?非常感谢!
【问题讨论】:
标签: image macos unix command-line terminal
我需要列出一个文件夹及其子文件夹中的所有图像,具有一定的大小,比如所有 320x200 的图像,我想我需要做ls -R *.png 然后将输出传递给其他一些过滤图像的命令这么大,我的命令行技能是池,有人可以帮忙吗?非常感谢!
【问题讨论】:
标签: image macos unix command-line terminal
man find 和 imagemagick's identify 是您所需要的。
【讨论】:
您可以使用 sips 从图像中获取pixelHeight 和pixelWidth。通过将该命令与 find 结合使用,您将能够递归搜索特定大小的图像。
示例:
results=$HOME/Desktop/results.txt
find . -type f -name "*.png" -exec sips -g pixelHeight -g pixelWidth > $results {} \;
cat $results | grep "\w\{11\}\:\s\(320\)" -B 1 -A 1 | grep "\w\{10\}\:\s\(200\)" -B 1
results.txt:
/Users/Me/Desktop/nsfw.png
pixelHeight: 320
pixelWidth: 200
信息:
这些命令可以根据需要进行细化,也可以进行压缩,但应该按原样工作。
【讨论】:
在 MacOSX 中有更多有用的终端命令使用元数据(类似于 Spotlight):
mdfind, mdls 等(存在手册页,可以使用man mdls 显示……)。对于您想要做的事情,请尝试mdfind,如下例所示,以查找给定文件夹中(并且仅在此文件夹中)像素大小大于 900 x 1100 的所有文件:
mdfind -onlyin /Users/hg/Pictures/2014/01/01 "kMDItemPixelHeight>1100 && kMDItemPixelWidth>900"
查询参数名称(看起来有点奇怪)可以在 DataManagement --> File Management --> MDItemReference 的文档中找到。试试mdls filename 看看其中的一些参数。
【讨论】: