昨天我拍了一堆照片,但我忘了更改相机中的时区。现在所有的图片都有错误的修改日期。
我想将特定目录中所有文件的修改日期更改为负 10 小时
。
#!/bin/sh
for i in /Users/slick/Desktop/100D5200/*; do
touch -r "$i" -d '-10 hour' "$i"
done
当我在 OSX 中运行这个脚本时,我得到了
touch: illegal option -- d usage: touch [-A [-][[hh]mm]SS] [-acfhm] [-r file] [-t [[CC]YY]MMDDhhmm[.SS]] file ...
我做错了什么?
最佳答案
您正在使用 GNU touch
的选项。您可以使用 Homebrew 在 OS X 中安装它在 OS X 中:
$ brew install coreutils
然后它将在名称 gtouch
而不是 touch
下可用:
#!/bin/sh
for i in /Users/slick/Desktop/100D5200/*; do
gtouch -r "$i" -d '-10 hour' "$i"
done
但是,-d '10 hour'
不会将时间戳后退十小时,而是将时间戳设置为当前时间减去十小时。如果要偏移时间戳,则必须对每个文件进行算术运算。
此外,您真正想要的可能是更改图片的 EXIF 数据,这需要完全不同于 touch
的其他工具。
关于macos - Bash touch - 非法选项 -d,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34465205/