【问题标题】:Adding multiple keywords with Exiftool, but only if they're not already present使用 Exiftool 添加多个关键字,但前提是它们不存在
【发布时间】:2021-07-20 18:09:47
【问题描述】:

我正在运行以下命令来为图像添加多个关键字:

exiftool  -keywords+="Flowering"  -keywords+="In Flower"  -keywords+="Primula vulgaris"  -overwrite_original "/pictures/Some Folder/P4130073.JPG"

但是,我注意到,如果我对已经包含特定关键字的图像执行此操作,那么它将被第二次添加。

如何确保仅在关键字已经丢失时才添加关键字,并且如果它们存在,它将执行无操作(理想情况下保持文件不变)。我在论坛和文档上阅读了一些问题,但 NoDups 文档对我来说并不清楚(我是 exiftool n00b),我找到的所有答案都只处理一个关键字添加。

额外的好处是,如果“存在”检查可以不区分大小写,那就更好了(例如,如果我在做keywords+="Flowering" 并且图像已经有关键字“开花”,那么什么都不会完成。

我还需要它在 Linux、MacOS 和 Windows 上工作(我知道引号会使事情复杂化!)。

【问题讨论】:

  • 这是您计划在成百上千个文件上经常运行的东西吗?
  • 您是否在所有平台上都安装了 Perl 或 Python?
  • 是的,它将在数千个系统上运行。并且 perl 可能可用,但我只想在本地使用 exifTool,因为我将它作为子进程生成,所以要保持简单。

标签: linux windows macos exiftool


【解决方案1】:

Exiftool FAQ #17

为防止添加新项目时重复,可以将特定项目 删除然后在同一命令中再次添加回来。例如, 以下命令添加关键字“one”和“two”,确保 如果它们已经存在于 图片:

exiftool -keywords-=one -keywords+=one -keywords-=two -keywords+=two DIR

NoDups helper function 用于删除文件中已经存在的重复项。它不是用来防止一开始就添加重复的。

【讨论】:

  • 谢谢。我已经看到了,但基于论坛帖子,我担心这一点:“为防止在添加新项目时重复,可以删除特定项目,然后在同一命令中再次添加。” - 如果我的理解是正确的,删除​​和添加不会导致无操作,但文件总是会被触及(见这里:stackoverflow.com/questions/42365424/…)。那是对的吗?也就是说,我发现这似乎明确描述了您的解决方案:exiftool.org/forum/index.php?topic=10116.0
  • 实际上,对于我正在运行的进程,即使重复标记意味着它是无操作的,也可以触摸文件,因为其他依赖项依赖于文件的日期/时间更改以知道它已成功处理。所以我会将此标记为已回答。谢谢!
  • 这不是我检查文件是否被触摸的东西,但-P (-preserve) option(大写P,小写是不同的选项)将保留系统时间戳。
  • 我自己,我很懒。在我完成文件夹之前,我不担心重复的关键字。然后我只是运行NoDups 来清理烂摊子作为最后一步。
  • 是的,不幸的是,这是一个自动后台进程,将在 50 万张照片上运行(它是我的应用程序的一部分:github.com/webreaper/damselfly),所以我想尽量不要无意中添加欺骗关键字,因为清理将是一场噩梦。 ;)
猜你喜欢
  • 1970-01-01
  • 2023-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多