更改目录修改时间的操作列表

更改目录修改时间的操作列表

我正在寻找可以执行的操作列表,这些操作将导致目录修改时间更新。我首先想到的是:

  • 在目录中创建新文件
  • 删除目录中的文件

我错过了什么?

答案1

在 Linux 中(事实上,在大多数 Unix 中),目录就像包含简单表的文件,如下所示:

索引节点名称
+-----+-----------+
| 3 | 箱 |
| 12 | 首页 |
| 139 | usr |
| ... | ... |
+-----+-----------+

因此,当您更改此表时,这些“文件”(目录)会发生变化。当您在该表中添加或删除条目时(如您所指出的),它会发生变化,但这也适用于目录,而不仅适用于文件。您无法更改现有条目的 inode,但您可以更改链接到该 inode 的名称(重命名文件)。所以:

  • 创建指向 inode 的链接(在该目录中创建文件/目录,或将文件移动到该目录中)
  • 删除指向 inode 的链接(从该目录中删除文件/目录,或从该目录中移动文件)
  • 更改链接的名称(重命名文件/目录)

这些是更改目录修改时间的操作。

答案2

从宏观层面来看,有一个有趣的观察。

当您使用某些工具在本地目录(而不是 /tmp)中创建一个临时文件时,这些文件通常是隐藏的(以 开头.),而目录中没有任何明显的变化,您会发现它的修改时间发生了变化。

其中一个情况是,当您打开一个文件时,vi会生成一个临时文件 (.filename.swp),然后退出该文件而不做任何更改。交换文件被创建和删除,目录的修改时间也发生了变化。

这没什么不对,但有助于了解发生了什么。而且,如果你对此感到困扰,也有办法阻止它。

答案3

您可以“触摸”目录来更新其日期/时间,而不更改内容。

相关内容