gpt4 book ai didi

ruby - 如何在 Mac OS 上使用 ruby​​ 设置文件创建时间?

转载 作者:数据小太阳 更新时间:2023-10-29 06:48:43 26 4
gpt4 key购买 nike

我正在尝试使用 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(连同 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)

最佳答案

有一个 Ruby 解决方案,方法是 utime。但是您必须立即设置修改时间 (mtime) 和访问时间 (atime)。如果您想保留访问时间,您可以使用:

File.utime(File.atime(path), modification_time, path)

参见 Ruby core documentation

关于ruby - 如何在 Mac OS 上使用 ruby​​ 设置文件创建时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8425689/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com