从OSX中的文件创建/修改日期减去时间

时间:2011-11-06 15:44:23

标签: macos shell date touch osx-snow-leopard

我正在尝试将一系列文件的日期更改为9小时。我达到了这个目标:

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

这应该适用于最近的系统,但OSX中的touch命令似乎有点过时而不支持-d开关。

我正在使用Snow Leopard。有关使用单行命令执行此操作的最佳选项的任何想法吗?我不想为此创建脚本。

3 个答案:

答案 0 :(得分:2)

好的,把它整理出来。 OSX附带gtouch命令,它知道-d开关。它是GNU coreutils的一部分。

答案 1 :(得分:1)

Donno 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

所有这些当然可以在命令行上单个for循环中完成。

以下是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

答案 2 :(得分:0)

Wikipedia Page for Touch,看来你已经习惯了GNU版的Touch。哪个MacOS没有使用。

对于您想要做的事情,请查看“SetFile”命令,该命令随XCode工具一起安装。你有-d和-m选项,它们重置了创建日期和修改日期&时间分别。

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

相关问题