2015-12-25 55 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’)

它爲我的作品在埃爾卡皮坦