如果满足其中一个响应条件,则在 MacOS 上输出 CLI 响应

Outputting CLI response on MacOS if one of the response criteria is met

我目前正在 MacOS (Sierra) 上使用名为 Exiftool 的命令行实用程序。 运行 此 CLI 有多种方法,但本质上,您将界面指向一个文件,它 return 是有关文件的信息。为了限制信息量 returned,您可以简单地向其添加参数。

目前,这是我试图在伪代码中实现的目标:-

运行 'exiftool' 针对特定图像文件。如果 'Megapixels' 值 > 0,则 return 'filename'、'OriginalDate' 和 'Megapixels'.

return 'filename' 和 'OriginalDate' 和 'Megapixels' 的命令很简单:-

exiftool -filename -OriginalData -Megapixels myphotograph.jpeg

但是,在 return 所有三个值之前,我如何检查百万像素值?所以本质上,我想 运行 exiftool CLI 针对 myphotograph.jpeg 并且如果百万像素值(参数)大于 0,我希望它 return 该值和另外两个?输出最终会输出到.csv文件。

希望这是有道理的。

谢谢

试试这个:
exiftool -if '$Megapixels>1' -filename -DateTimeOriginal -Megapixels -cv FileOrDir

我将其更改为大于 1,因为只要有一些图像数据,所有图像的大小都会大于 0。例如,我有一张显示为 0.000064 兆像素的 8x8 图像。您所要做的就是将 1 更改为您想要限制选择的任何数字。

我假设您实际上是指 DateTimeOriginal 而不是 OriginalDateOriginalData。 Exiftool 只将 OriginalDate 识别为它自己的 MIE format 的标签,无论如何它映射到 DateTimeOriginal

如果要递归到子目录,请添加 -r

如果想直接生成csv文件可以加上-csv >/path/to/file.csv。这将在开头添加一个额外的列,其中包含完整的源路径和文件名。您还可以查看 -p 选项来滚动您自己的 csv 格式。

@StarGeek 的回答更优雅,并且可以移植到 Windows,但我现在已经用 awk 完成了,不妨分享一下:

exiftool image.jpg | awk -F': ' '
   /^Create Date/{d=}
   /^Megapixels/ {m=}
   /^File Name/  {n=}
   END{ if(m>0)print n,m,d }' OFS=','

输出

image.jpg,8.0,2015:08:16 14:39:45.275