Bash touch - 非法选项-d

时间:2015-12-25 18:09:20

标签: macos bash unix-timestamp exif

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

我想将特定目录中所有文件的修改日期更改为minus 10 hours

#!/bin/sh
for i in /Users/slick/Desktop/100D5200/*; do
  touch -r "$i" -d '-10 hour' "$i"
done

当我在OSX中运行此脚本时,我得到了

  

触摸:非法选项 - d用法:触摸[-A [ - ] [[hh] mm] SS] [-acfhm]   [-r file] [-t [[CC] YY] MMDDhhmm [.SS]]档案......

我做错了什么?

3 个答案:

答案 0 :(得分:1)

您正在使用GNU public static class WebDriverExtensions { public static IWebElement FindElementIfExists(this IWebDriver driver, By by) { IWebElement result = null; try { result = driver.FindElement(by); } catch { } return result; } } 的选项。您可以在OS X中使用Homebrew在OS X中安装它:

touch

然后它将以$ brew install coreutils 而不是gtouch

的名称提供
touch

但是,#!/bin/sh for i in /Users/slick/Desktop/100D5200/*; do gtouch -r "$i" -d '-10 hour' "$i" done 不会将时间戳移回十小时,而是将时间戳设置为当前时间减去十小时。如果要偏移时间戳,则必须为每个文件执行算术运算。

此外,你真正想要的是改变图片的EXIF数据,这需要另一个工具而不是-d '10 hour'

答案 1 :(得分:1)

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

exiftool "-AllDates-=10" /Users/slick/Desktop/100D5200
exiftool "-DateTimeOriginal>FileModifyDate" /Users/slick/Desktop/100D5200

显然在做之前

brew install exiftool

答案 2 :(得分:0)

bash脚本中的

尝试使用: $(touch -r“$ i”-d'10小时'“$ i”)

它适用于El Capitan