我试图在bash for-loop中使用exiftool编写和覆盖jpg元数据,但是一个特定的命令在循环中不起作用。我想用datetimeoriginal数据覆盖gpstimestamp,如果在命令行上执行,但在脚本中没有,则会有效。
for f in $(ls *.jpg); do
[... stuff that works]
exiftool "-gpstimestamp<datetimeoriginal" $f
done
为什么这个没有在循环中工作的任何想法?
答案 0 :(得分:1)
for循环可以更简单的方式完成:
#!/bin/bash
for f in *.jpg
do
[... stuff that works]
exiftool "-gpstimestamp<datetimeoriginal" $f
done
注意:您可以执行
exiftool
而不是运行for循环 使用以下方式处理目录中的所有*.jpg
个文件:
exiftool "-gpstimestamp<datetimeoriginal" -ext jpg .
-ext EXT(-extension)处理具有指定扩展名的文件
答案 1 :(得分:1)
Exiftool不需要在循环中运行,并且在没有(Exiftool common mistake 3)的情况下运行得更快。
循环后直接使用此命令
exiftool '-gpstimestamp<datetimeoriginal' -ext jpg /path/to/target/dir
这将为目标目录中的所有Jpg文件复制DateTimeOriginal
到GPSTimestamp
。您可以添加-r
以递归到子目录中。
您需要考虑的一件事是GPSTimestamp
预计是UTC时间,DateTimeOriginal
通常是拍摄图像的时区。