Ruby 查找文件创建时间-寻找解决方案

zlx_star · 2015年09月16日 · 最后由 zlx_star 回复于 2015年09月24日 · 2495 次阅读

很抱歉打扰各位了,我请教一个简单的问题:

查找文件创建时间

这里的文件创建时间表示文件第一次被创建的时间,修改文件内容,修改文件权限,移动,重命名,touch 文件均不改变。

我已经了解到 Linux 体系里面有 atime, mtime, ctime,这里 对它们做了详细的分析,但均不能满足我的需求。

另外,Mac 上面的 mdls 可以得到这个信息: kMDItemContentCreationDate

有没有在在 Linux 可以使用的方案,如果是兼容各大操作系统最好?

Update 2015-09-16 12:57:47 +0800

之前也没找到解决办法,最后以创建文件时候的时间戳命名的。

主要看文件系统的。如果文件系统没有文件生日的话,怎么搞都没用…

Ruby 2.2 开始有了birthtime,就是你要的。

#3 楼 @ericguo 的确,不知道是不是各系统都可用。

Ubuntu 14.10 上面会报错: NotImplementedError: birthtime() function is unimplemented on this machine

#4 楼 @zlx_star 嗯,好像的确 Ubuntu 12.04 下同样有这个问题,难得的 Windows 下正常,Linux 下不正常的功能。。

D:\>irb
irb(main):001:0> File.birthtime('Ruby223.rar')
=> 2015-09-16 11:00:24 +0800
irb(main):002:0>

#5 楼 @ericguo 这应该是文件系统的原因,Ubuntu 上面文件系统多样化,没找到统一的方案吧

看了下 ext3 是不支持的,ext4 才有。

Dates recorded modification (mtime), attribute modification (ctime), access (atime), delete (dtime), create (crtime)

#7 楼 @adamshen 我查到的资料也是这样说的

需要 登录 后方可回复, 如果你还没有账号请 注册新账号