Bash for 循环中的 Exiftool 命令不起作用
Exiftool command in Bash for-loop not working
我正在尝试在 bash for 循环中使用 exiftool 写入和覆盖 jpg 元数据,但特定命令在循环中不起作用。我想用 datetimeoriginal 数据覆盖 gpstimestamp,这在命令行上执行时有效,但在脚本中无效..
for f in $(ls *.jpg); do
[... stuff that works]
exiftool "-gpstimestamp<datetimeoriginal" $f
done
知道为什么这在循环中不起作用吗?
for 循环可以用更简单的方式完成:
#!/bin/bash
for f in *.jpg
do
[... stuff that works]
exiftool "-gpstimestamp<datetimeoriginal" $f
done
Note: You instead of running a for loop, you can execute exiftool
to
process all *.jpg
files in the directory using:
exiftool "-gpstimestamp<datetimeoriginal" -ext jpg .
-ext EXT (-extension) Process files with specified extension
Exiftool 不需要在循环中 运行 并且在没有 (Exiftool common mistake 3) 的情况下会 运行 快得多。
循环后直接使用此命令
exiftool '-gpstimestamp<datetimeoriginal' -ext jpg /path/to/target/dir
这将为目标目录中的所有 Jpg 文件复制 DateTimeOriginal
到 GPSTimestamp
。您可以添加 -r
以递归到子目录中。
您需要考虑的一件事是 GPSTimestamp
应该是 UTC 时间,而 DateTimeOriginal
通常是拍摄图像的时区。
我正在尝试在 bash for 循环中使用 exiftool 写入和覆盖 jpg 元数据,但特定命令在循环中不起作用。我想用 datetimeoriginal 数据覆盖 gpstimestamp,这在命令行上执行时有效,但在脚本中无效..
for f in $(ls *.jpg); do
[... stuff that works]
exiftool "-gpstimestamp<datetimeoriginal" $f
done
知道为什么这在循环中不起作用吗?
for 循环可以用更简单的方式完成:
#!/bin/bash
for f in *.jpg
do
[... stuff that works]
exiftool "-gpstimestamp<datetimeoriginal" $f
done
Note: You instead of running a for loop, you can execute
exiftool
to process all*.jpg
files in the directory using:
exiftool "-gpstimestamp<datetimeoriginal" -ext jpg .
-ext EXT (-extension) Process files with specified extension
Exiftool 不需要在循环中 运行 并且在没有 (Exiftool common mistake 3) 的情况下会 运行 快得多。
循环后直接使用此命令
exiftool '-gpstimestamp<datetimeoriginal' -ext jpg /path/to/target/dir
这将为目标目录中的所有 Jpg 文件复制 DateTimeOriginal
到 GPSTimestamp
。您可以添加 -r
以递归到子目录中。
您需要考虑的一件事是 GPSTimestamp
应该是 UTC 时间,而 DateTimeOriginal
通常是拍摄图像的时区。