2015-12-25 53 views
1

昨天我拍了一大堆照片,但我忘了更改相机中的时区。现在所有图片都有错误的修改日期。Bash touch - 非法选项-d

我想将特定目录中所有文件的修改日期更改为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]毫米] SS] [-acfhm ] [-r文件] [-t [[CC] YY] MMDDHHMM [.SS]文件...

我在做什么错?

+2

我不完全的OSX用户,但我认为这顶ic可能对你有用:http://apple.stackexchange.com/questions/99536/changing-creation-date-of-a-file – monsune

+0

什么'哪个触摸'和'触摸 - 版本'和'触摸 - 帮助给你?我想你没有使用GNU touch,而你的版本缺少'--d' – mnagel

+1

*我做错了什么?*期望可用的非标准的,特定于平台的扩展。 –

回答

1

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

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

显然做

brew install exiftool 
0

您正在使用GNU touch的选项。您可以在OS X上使用Homebrew在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

+0

我得到这个:-bash:gtouch:command not found – Camaleo

+0

@Camaleo我的不好。我不知道我用'brew'安装了它。 –

0

在bash脚本之前尝试使用: $(触摸-r “$ I” -d“-10小时”‘$ I’)

它为我的作品在埃尔卡皮坦