当我运行 时ls -l
,它会列出文件和目录的修改时间。如上所述在此主题中,目录的修改时间并不反映其所有内容。它似乎也不会受到目录名称更改的影响。目录的修改时间到底反映了什么?
它是目录顶层文件(或目录)的最新修改时间吗?
答案1
请注意,在 Unix 中,目录并不“包含”其中的文件。相反,它包含指向这些文件的链接。link(2)
有关详细信息,请参阅系统调用。
这意味着目录的“直接”内容是文件名和相应i-数字。因此,目录的修改日期表明此列表何时发生更改。会导致此类更改的操作包括(但不一定限于)以下内容:
- 在目录中创建新文件
unlink(2)
从目录中删除(或者说删除)一个文件- 重命名目录中的文件
- 将文件硬链接到目录中的其他位置
答案2
将目录视为包含其他文件列表的简单文件。每当您更改其内容(重命名文件、添加或删除所含文件)时,目录的修改时间都会发生变化。