2011-11-06 41 views
0

我試圖將一系列文件的日期轉移9個小時。據我已經達到,因爲這:在OSX中從文件創建/修改日期中減去時間

for i in *.MOV; do touch -r "$i" -d "-9 hours" "$i"; done 

這應該在最近的系統中工作,但在OSX觸摸命令似乎有點過時,不支持-d開關。

我正在使用雪豹。有關使用單行命令執行此操作的最佳選項的任何想法?我不想爲此創建腳本。

+0

從OS X Mavericks開始,有一個-A選項可以爲您執行此操作。 – crb

+0

看看這個:https://stackoverflow.com/questions/28400578/updating-file-created-date-by-x-number-of-days-mac-osx/28406484#28406484和這個:https:/ /apple.stackexchange.com/questions/197895/how-to-do-a-batch-change-shift-of-file-creation-date – hawkeye

回答

2

好的,整理出來。 OSX附帶gtouch命令,該命令知道-d開關。它是GNU coreutils的一部分。

+0

從OS X Mavericks開始,有一個-A選項可供您觸摸。 – crb

0

看着Wikipedia Page for Touch,看起來你習慣於Touch的GNU版本。哪個MacOS不使用。

對於您想要做的事情,請查看使用XCode工具安裝的「SetFile」命令。您有-d和-m選項,它們分別重置創建日期和修改日期&次。

http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/SetFile.1.html

+0

SetFile是否允許更改日期?我看到我可以使用SetFile的-d開關設置日期和時間,但找不到一個將它移動幾個小時 –

+0

AFAIK,SetFile中沒有「-d'-9 hours'」功能。我的建議是格式化日期(使用kashyap的答案),然後將其作爲通過SetFile設置的日期和時間。看看我發佈的文檔鏈接,你可以看到SetFile期待的日期和時間。 –

1

唐諾OS X,但它應該是很容易

get curr time stamp on the file 
convert it to seconds 
subtract 9 hours (9*60*60 secs) from it 
convert it back to the format accepted by touch's -t option 
run touch command 

所有這一切,當然可以在單來完成對命令行循環。

下面是WikiPedia顯示來回轉換的簡單示例。

# To convert a specific time stamp to Unix epoch time (seconds since 1970-01-01): 
date +"%s" -d "Fri Apr 24 13:14:39 CDT 2009" 
# 1240596879 

# To convert Unix epoch time (seconds since 1970-01-01) to a human readable format: 
date -d "UTC 1970-01-01 1240596879 secs" 
# Fri Apr 24 13:14:39 CDT 2009 

# Or: 
date -ud @1000000000 
# Sun Sep 9 01:46:40 UTC 2001 

# or: Haven't tested this but should work.. 
date -d @1000000000 +%y%m%d%%H%M%S 
# 010909014640