Bash for-loop中的Exiftool命令不起作用

时间:2017-06-12 12:41:06

标签: bash shell exiftool

我试图在bash for-loop中使用exiftool编写和覆盖jpg元数据,但是一个特定的命令在循环中不起作用。我想用datetimeoriginal数据覆盖gpstimestamp,如果在命令行上执行,但在脚本中没有,则会有效。

for f in $(ls *.jpg); do

    [... stuff that works]

    exiftool "-gpstimestamp<datetimeoriginal" $f
done

为什么这个没有在循环中工作的任何想法?

2 个答案:

答案 0 :(得分:1)

for循环可以更简单的方式完成:

#!/bin/bash
for f in *.jpg
do

    [... stuff that works]

    exiftool "-gpstimestamp<datetimeoriginal" $f
done
  

注意:您可以执行exiftool而不是运行for循环   使用以下方式处理目录中的所有*.jpg个文件:

     

exiftool info

exiftool "-gpstimestamp<datetimeoriginal" -ext jpg .

exiftool man

  

-ext EXT(-extension)处理具有指定扩展名的文件

答案 1 :(得分:1)

Exiftool不需要在循环中运行,并且在没有(Exiftool common mistake 3)的情况下运行得更快。

循环后直接使用此命令
exiftool '-gpstimestamp<datetimeoriginal' -ext jpg /path/to/target/dir

这将为目标目录中的所有Jpg文件复制DateTimeOriginalGPSTimestamp。您可以添加-r以递归到子目录中。

您需要考虑的一件事是GPSTimestamp预计是UTC时间,DateTimeOriginal通常是拍摄图像的时区。