我正在寻找可以执行的操作列表,这些操作将导致目录修改时间更新。我首先想到的是:
- 在目录中创建新文件
- 删除目录中的文件
我错过了什么?
答案1
在 Linux 中(事实上,在大多数 Unix 中),目录就像包含简单表的文件,如下所示:
索引节点名称 +-----+-----------+ | 3 | 箱 | | 12 | 首页 | | 139 | usr | | ... | ... | +-----+-----------+
因此,当您更改此表时,这些“文件”(目录)会发生变化。当您在该表中添加或删除条目时(如您所指出的),它会发生变化,但这也适用于目录,而不仅适用于文件。您无法更改现有条目的 inode,但您可以更改链接到该 inode 的名称(重命名文件)。所以:
- 创建指向 inode 的链接(在该目录中创建文件/目录,或将文件移动到该目录中)
- 删除指向 inode 的链接(从该目录中删除文件/目录,或从该目录中移动文件)
- 更改链接的名称(重命名文件/目录)
这些是更改目录修改时间的操作。
答案2
从宏观层面来看,有一个有趣的观察。
当您使用某些工具在本地目录(而不是 /tmp)中创建一个临时文件时,这些文件通常是隐藏的(以 开头.
),而目录中没有任何明显的变化,您会发现它的修改时间发生了变化。
其中一个情况是,当您打开一个文件时,vi
会生成一个临时文件 (.filename.swp),然后退出该文件而不做任何更改。交换文件被创建和删除,目录的修改时间也发生了变化。
这没什么不对,但有助于了解发生了什么。而且,如果你对此感到困扰,也有办法阻止它。
答案3
您可以“触摸”目录来更新其日期/时间,而不更改内容。