Macos Bash touch-非法选项-d

Macos Bash touch-非法选项-d,macos,bash,unix-timestamp,exif,Macos,Bash,Unix Timestamp,Exif,昨天我拍了很多照片,但我忘了改变相机的时区。现在所有图片都有错误的修改日期 我想将特定目录中所有文件的修改日期更改为减去10小时 #!/bin/sh for i in /Users/slick/Desktop/100D5200/*; do touch -r "$i" -d '-10 hour' "$i" done 当我在OSX中运行这个脚本时,我得到 touch:非法选项--d用法:touch[-A[-][[hh]mm]SS][acfhm] [-r文件][-t[[CC]YY]MMDDhhm

昨天我拍了很多照片,但我忘了改变相机的时区。现在所有图片都有错误的修改日期

我想将特定目录中所有文件的修改日期更改为
减去10小时

#!/bin/sh
for i in /Users/slick/Desktop/100D5200/*; do
  touch -r "$i" -d '-10 hour' "$i"
done
当我在OSX中运行这个脚本时,我得到

touch:非法选项--d用法:touch[-A[-][[hh]mm]SS][acfhm] [-r文件][-t[[CC]YY]MMDDhhmm[.SS]]文件


我做错了什么?

您正在使用GNU
touch
的选项。您可以使用操作系统X中的以下命令将其安装到操作系统X中:

然后它将以名称
gtouch
而不是
touch
提供:

#!/bin/sh
for i in /Users/slick/Desktop/100D5200/*; do
  gtouch -r "$i" -d '-10 hour' "$i"
done
但是,
-d“10小时”
不会将时间戳向后移动10小时,而是将时间戳设置为当前时间减去10小时。如果你想抵消时间戳,你必须为每个文件做算术运算


此外,您实际需要的可能是更改图片的EXIF数据,这将需要另一种工具,而不仅仅是触摸。

以下命令解决了我的问题:

exiftool "-AllDates-=10" /Users/slick/Desktop/100D5200
exiftool "-DateTimeOriginal>FileModifyDate" /Users/slick/Desktop/100D5200
显然在你之前

brew install exiftool

在bash脚本中,请尝试使用: $(触摸-r“$i”-d'-10小时“$i”)


它在El Capitan上对我很有效

我并不是一个OSX用户,但我认为这个话题对你很有用:
哪个触摸
触摸--version
触摸--help
给了你什么?我想您没有使用GNU touch,并且您的版本缺少
--d
我做错了什么?期望提供非标准的、特定于平台的扩展。可能值得一读。@Camaleo我的错。我不知道我是用
brew
安装的。
brew install exiftool