0

我尝试在我的 *.jpg 文件中找到特定的元数据内容,例如“Odeon”,exiftool.exe然后从文件中删除这个特定的标签。

我用命令找不到“Odeon”

exiftool -if "$keywords =~ /Odeon/" .

我知道它在那里,对于这个例子,内容存储在标签“位置”中。

请有人告诉我,如何
a) 找到内容,无论它将存储在 *.jpg 中的何处
b) 从该文件中删除找到的标签(不备份文件)?

4

1 回答 1

1

您的命令不起作用的原因是您只检查了关键字标签。位置是一个不同的标签,您可以在那里查看该信息。

不幸的是,Exiftool 无法仅列出具有匹配数据的标签。您可以通过另一个命令行程序来管道输出,例如 Find(因为您在 Windows 上)或 Grep(其他平台)。在这种情况下,您的命令行将如下所示:
exiftool -g1 -a -s FileOrDir | Find "Odeon"
这将列出所有包含您的信息的标签。

找到标签后,您可以使用此命令将其删除而无需备份文件,将 TAG 替换为标签的名称:
exiftool -overwrite_original -TAG= FileOrDir
请注意,如果您指定目录,此命令将从所有文件中删除该标签。如果你想更有选择性并且标签只包含文本“Odeon”,那么你可以使用这个命令。请注意,此命令区分大小写。它不会删除“oDeON”或其他变体:
exiftool -overwrite_original -TAG-="Odeon" FileOrDir
如果您想删除包含“Odeon”作为较长字符串的一部分并且不区分大小写的某个标签,那么您可以添加该-if选项。
exiftool -overwrite_original -if "$TAG=~/odeon/i" -TAG= FileOrDir

最后,还有使用该-api "Filter=…"选项的霰弹枪方法。这需要 10.05 或更高版本。此命令:
exiftool -overwrite_original -api "Filter=s/odeon//gi" -tagsfromfile @ -all:all FileOrDir
将从文件中的所有标签中删除“odeon”(不区分大小写)。它不会删除标签,如果 odeon 是较长字符串的一部分,则字符串的其余部分将保留。例如,如果 Location 等于“Odeon”,它将变成一个空白字符串。如果 Description 是“This is Odeon”,它将变成“This is”。"Filter=" 之后的部分是 perl 正则表达式替换,您可以通过查看正则表达式来进一步完善它。

于 2016-08-31T18:30:16.883 回答