我正在尝试使用 ruby 脚本为 Mac OS 上的文件设置文件系统创建时间。
在 Mac OS X 上,'ctime' 代表最后一次 inode 修改时间,而不是文件创建时间,因此使用 ruby 的 File.utime() 设置 ctime 无济于事。
使用此提示 [ http://inessential.com/2008/12/18/file_creation_date_in_ruby_on_macs ] 我可以检索文件的创建时间:
Time.parse(`mdls -name kMDItemContentCreationDate -raw "#{filename}"`)
...但是关于如何使用 ruby 设置它的任何想法?
- 更新 -
好的,我想我实际上可以用 ruby 做到这一点File.utime
。
即使 Mac OS 在技术上不使用 ctime 来跟踪文件创建时间,但当您使用utime
更新ctime(以及必须同时设置的mtimekMDItemContentCreationDate
)时,文件系统似乎也神奇地按照.
因此,要将文件名设置为 2010 年 10 月 1 日的 ctime 和 2010 年 10 月 2 日的 mtime:
File.utime(Time.strptime('011010', '%d%m%y'), Time.strptime('021010', '%d%m%y'), filename)