目前我使用 exiftool-全部=选项,它会从我的照片中删除所有 EXIF 数据:
exiftool -overwrite_original -all= /Users/andyl/photos/*.jpg
现在我想让 exiftool 删除所有 EXIF 信息,但不删除照片的标题、说明和关键字。
我怎样才能实现这个目标?
答案1
如果您遇到麻烦,您应该始终检查手册页。
man exiftools
内容如下:
--TAG
Exclude specified tag from extracted information. Same as the -x
option. May also be used following a -tagsFromFile option to
exclude tags from being copied, or to exclude groups from being
deleted when deleting all information (ie. "-all= --exif:all"
deletes all but EXIF information). But note that this will not
exclude individual tags from a group delete. Instead, individual
tags may be recovered using the -tagsFromFile option (ie. "-all=
-tagsfromfile @ -artist"). Wildcards are permitted as described
above for -TAG.
就像是:
exiftool -overwrite_original -all= -tagsFromFile @ -title -caption -keywords /Users/andyl/photos/*.jpg
应该可以工作。确保标签确实是这样命名的,使用exif /path/to/file.jpg
。
该命令的作用是什么?-all=
删除所有标签,-tagsFromFile @
从源文件(在本例中@
代表当前文件)中获取列出的标志(当然,您可以用这里的固定文件替换-tagsFromFile pic.jpg
),然后将它们写入目标。
答案2
如果您只想从原始文件中删除某些标签(即,不在文件之间转移标签,而是在同一个文件内转移标签),则不需要开关-tagsFromFile
,而是<
告诉它们沿着文件传输。
笔记:截至目前(版本 10.79)-common<common
无法设置复合标签因此使用-common
来传输标签会破坏某些东西,例如传输Flash
到Model
。因此,我的代码是明确的,并且包括通常包含的每个标签-common
。无论如何,这似乎是个好主意。
exiftool -All:All= \
-DateTimeOriginal<DateTimeOriginal \
-Model<Model \
-LensModel<LensModel \
-FocalLength<FocalLength \
-ISO<ISO \
-ExposureTime<ExposureTime -ShutterSpeedValue<ShutterSpeedValue -BulbDuration<BulbDuration \
-ApertureValue<ApertureValue -FNumber<FNumber \
-WhiteBalance<WhiteBalance \
-Flash<Flash \
test.jpg
# Or, if you want to use `-TagsFromFile`:
exiftool -All:All= \
-TagsFromFile test.jpg \
-DateTimeOriginal \
-Model \
-LensModel \
-FocalLength \
-ISO \
-ExposureTime -ShutterSpeedValue -BulbDuration \
-ApertureValue -FNumber \
-WhiteBalance \
-Flash \
test.jpg
另请注意我的代码与exiftool 应用程序文档,其中包括一些我无法用手头任务(和版本 10.79)完成的样本。
答案3
要使用 exif 工具删除所有数据:
重命名exiftool(-k).exe
为
exiftool (-overwrite_original -all= -k).exe
这解决了很多问题