dj.*_*dj. 9 ruby filesystems macos file ctime
我正在尝试使用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}"`)
Run Code Online (Sandbox Code Playgroud)
...但是有关如何使用ruby设置它的任何想法?
- 更新 -
好吧,我想我能实际上做到这一点File.utime
的红宝石.
尽管Mac OS在技术上并未使用ctime来跟踪文件创建时间,但当您使用utime
更新ctime(以及必须同时设置的mtime)时,文件系统似乎神奇地也会更新创建时间kMDItemContentCreationDate
.
因此,要将文件名设置为2010年10月1日的ctime和2010年10月2日的mtime:
File.utime(Time.strptime('011010', '%d%m%y'), Time.strptime('021010', '%d%m%y'), filename)
Run Code Online (Sandbox Code Playgroud)
ilt*_*mpo 12
这个方法有一个Ruby解决方案utime
.但是,你必须设置修改时间(修改时间)和访问时间(atime)一次.如果您想保持访问时间,可以使用:
File.utime(File.atime(path), modification_time, path)
Run Code Online (Sandbox Code Playgroud)
请参阅Ruby核心文档.