shell - Exiftool:将文本文件中的元数据批量写入 JPEG

标签 shell metadata jpeg exif exiftool

我想使用 ExifTool 批量写入以前保存在文本文件中的元数据。

假设我有一个包含以下 JPEG 文件的目录:

001.jpg 002.jpg 003.jpg 004.jpg 005.jpg

然后我创建文件 metadata.txt ,其中包含后跟冒号的文件名,然后我将其分发给同事,他将使用所需的元数据填充它——在本例中为逗号分隔的 IPTC 关键字。完成后文件如下所示:
001.jpg: Keyword, Keyword, Keyword 
002.jpg: Keyword, Keyword, Keyword
003.jpg: Keyword, Keyword, Keyword
004.jpg: Keyword, Keyword, Keyword
005.jpg: Keyword, Keyword, Keyword

我将如何将此文件提供给 ExifTool 并确保将正确的关键字保存到正确的文件中?如果有帮助,我也愿意更改文件的结构,例如将其格式化为 CSV、JSON 或 YAML。

最佳答案

如果可以把格式改成CSV文件,那么exiftool可以直接用 -csv option读取.

您必须以这种方式重新格式化它。第一行必须在文件名上方有“SourceFile”的标题,在关键字上方有“Keywords”。如果文件名不包含文件的路径,则必须从与文件相同的目录中运行命令。整个关键字字符串需要用引号括起来,这样它们就不会被视为单独的列。结果如下所示:

SourceFile,Keywords
001.jpg,"KeywordA, KeywordB, KeywordC"
002.jpg,"KeywordD, KeywordE, KeywordF"
003.jpg,"KeywordG, KeywordH, KeywordI"
004.jpg,"KeywordJ, KeywordK, KeywordL"
005.jpg,"KeywordM, KeywordN, KeywordO"

那时,您的命令将是exiftool -csv=/path/to/file.csv -sep ", " /path/to/files
-sep option需要确保将关键字视为单独的关键字而不是单个长关键字。

与循环遍历文件内容并为每一行运行 exiftool 的脚本相比,这具有优势。 Exiftool 最大的性能影响在于它的启动和循环运行会非常慢,尤其是在大量文件上(参见 Common Mistake #3)。

ExifTool FAQ #26有关从 csv 文件读取的更多详细信息。

关于shell - Exiftool:将文本文件中的元数据批量写入 JPEG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60392676/

相关文章:

linux - 如果未设置环境变量,如何记录?

xml - SGML 和 XML 有什么区别?

python在扫描mp3元数据后删除不需要的字符

.net - 为什么自定义属性同时出现在 IL 和 Metadata 中?

python - 如何在 App Engine 中解码 JPG 中的像素(使用纯 python)?

linux - Bash 脚本报告组成员

python - 如何使用 shell 脚本(和 makefile?)执行 python 程序

python - 箭头键、home 和 end 在 django 终端中不起作用

python-3.x - tifffile 无法解压缩 JPEG,因为 JPEG 不在 TIFF.DECOMPRESSORS 中

c# - 如何将 JPEG 图像转换为具有透明背景的 PNG 图像?