
我有一台 Mac,需要建立給定目錄及其子目錄中所有檔案內容的列表,以及每個檔案的「建立」、「新增」、「修改」和「上次開啟」日期。
查看各個線程,我可以看到如何使用“ls”或“stat”命令獲取創建/添加/修改數據,但我看不到任何遞歸獲取所有文件的上次打開日期信息的方法。
答案1
- 創建:雖然不是 UNIX 中包含的原始文件屬性之一,但該屬性在當今的許多文件系統上都可用(包括與 MacOS 最相關的 HFS+),並且現代版本的工具如
ls
和stat
知道如何訪問它:ls -U
,stat
使用B
(記錄在案)在線上說明頁)。 - 添加: 這本身並不存在。您可以使用包含檔案的目錄的上次修改時間來了解該目錄的上次修改時間,即檔案被新增(建立或移入)、刪除(刪除或移除)或重新命名。但您不知道是哪一個,並且只能獲得有關最近事件的資訊。
- 修改的和上次訪問時間:這些是 UNIX 中檔案的原始統計資料。大多數檔案系統和基本上所有工具都支援它們:
ls -u
、stat
使用a
和m
(同樣,如文件所述)。請注意,為了保存每次文件存取時的磁碟寫入,有時會關閉或有條件地關閉上次存取時間戳追蹤。
還有一個你沒提到的,那就是上次索引節點更改。這會追蹤文件元資料(而不是文件內容)上次更改的時間。
答案2
您可以使用stat
命令列出有關文件的資訊。此命令可以列出作業系統為檔案記錄的所有四個時間戳記:
%a
:訪問時間(atime)。這是文件最後一次開啟或以其他方式讀取(例如分析或索引其內容)。%m
:修改時間(mtime)。這是文件內容最後一次修改。如果檔案是從其他地方複製或下載的,則其 mtime 是否在複製時更新取決於複製的方式。%c
:inode 更改時間 (ctime)。每當檔案發生除讀取之外的任何情況時,此時間都會更新:修改、重新命名、移動、更改權限等。%B
:出生時間(創建時間)。這通常是創建或下載文件的時間,但對於某些應用程序,這可能反映了上次保存文件的時間。
您可以將它與find
命令遞歸列出文件。例如,要列出目前目錄下所有常規檔案的時間戳記和名稱,您可以使用:
find . -type f -exec stat -f '%Sa %Sc %Sm %SB %N' {} \;