2010-09-28 137 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如何存儲文件信息,但它可能不會將信息存儲到毫秒。

另一種方法可能是在創建文件名時將文件/微秒值添加到文件名本身並按這種方式排序?

相關問題