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

我正在查找可执行的操作列表,这将导致更新目录修改时间。 closures我的头顶上:

  • 在目录中创build一个新文件
  • 删除目录中的文件

我错过了什么?

在Linux(实际上在大多数的Unices中),目录就像包含简单表的文件一样:

  inode名称
 + ----- + ----------- +
 |  3 |  bin |
 |  12 | 首页|
 |  139 |  usr |
 |  ... |  ... |
 + ----- + ----------- +

所以,当你修改这个表时,这些“文件”(目录)会被改变。 当你添加或删除表中的条目时(如你所注意到的)它会改变,但是它也适用于目录,不仅仅是文件。 您不能更改现有条目的inode,但可以更改链接到该inode的名称(重命名文件)。 所以:

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

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

您可以“触摸”目录来更新date/时间,而无需更改内容。

在macros观层面,有一个有趣的观察。

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

其中一种情况是当你在vi中打开一个临时(.filename.swp)文件的文件,然后退出文件而不进行任何修改。 交换文件被创build和删除,目录的修改时间也被改变了。

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