2010-09-28 128 views
5

我需要按照硬盘到达硬盘时的顺序创建位于我的硬盘上的文件列表。要做到这一点,我已经使用了以下内容:按Bash创建时间以毫秒为单位订购文件

ls -lat 

然而,其中列出的日期/时间顺序中的所有文件,它只是他们的订单精确到秒。这里的问题是,有数以千计的文件,每隔一段时间,其中一些文件就会在同一秒内聚集在一起。我需要确切的正确的顺序。我猜测最简单的方法是将创建时间缩短到毫秒(或者可能是纳秒)。要做到这一点,我已经使用了以下尝试:

stat $myfile 

看修改时间,但它总是显示小时:分钟:second.00000000000。

有没有办法做到这一点? 谢谢, 里克

回答

3

精确度取决于你所使用的文件系统上,但即使有高精度的文件系统,如ext4,stat的标准实现使用time_t,它具有1秒的分辨率。

如果您有权访问所有这些文件的程序源,请尝试将时间戳设置为文件名的一部分,然后对文件名进行排序,而不是修改时间。

2

我不确定这是可能的。我的推理:

如果你看stat()函数调用,你会发现它返回一个包含有关文件信息的结构体。它的一个成员是这样的:

time_t st_mtime; /* time of last modification */ 

如果你看看time_t的结构,那么,wikipedia says this

Unix和POSIX兼容的系统 实现time_t的整数或 实时浮动型(通常是 32位或64位的整数) 表示自 Unix纪元的开始的秒数...

这意味着stat()的时间以秒为单位,而不是毫秒。我没有看过每个inode如何存储文件信息,但它可能不会将信息存储到毫秒。

另一种方法可能是在创建文件名时将文件/微秒值添加到文件名本身并按这种方式排序?

相关问题