目录上次修改日期
Posted
技术标签:
【中文标题】目录上次修改日期【英文标题】:Directory last modified date 【发布时间】:2011-04-06 22:44:56 【问题描述】:我想知道何时更改。我修改了特定目录中的文件(通过 FTP),但目录的 LMD 没有改变。它应该如何运作?
【问题讨论】:
【参考方案1】:当添加、删除或重命名文件或子目录时,目录本身的 mtime(修改时间)会发生变化。
修改目录中文件的内容不会改变目录本身,也不会更新文件或子目录的修改时间。此外,在子目录中添加、删除或重命名文件/目录不会传播到目录。如果更改目录的权限,ctime 会更改,但 mtime 不会。
【讨论】:
修改子目录时是否修改? @Flimm:这取决于对子目录的修改的性质。如果将文件添加到子目录或从子目录中删除,则不会。如果子目录被重命名,那么是的(因为新名称存储在包含子目录的目录中,所以“真正”改变的是主目录中的条目,而子目录中没有任何变化)。 @Asmageddon:如果某些内容被修改了几级,则无法从目录的修改时间知道几级。想想这会带来什么 - 最终,根目录必须在任何地方修改任何文件时随时修改,使其内存中的 inode 成为每个对任何文件执行任何操作的进程的热点。 @cram2208:Gedit 会在目录中创建备份文件,还是锁定文件,或者类似的东西?如果你使用touch somefile
而不是gedit
会发生什么?
@JonathanLeffler 我应该说很好的见解,我现在完全理解发生了什么。它是目录中的备份文件,而不是文件本身的修改。在文件上使用触摸时,它实际上更改了文件的 LMD,但没有更改目录的 LMD。在这些细节上要更加小心......【参考方案2】:
目录就像一个包含文件名列表的文件(实际上,您可能在编辑器中不小心打开了一个目录,您可以在其中看到它是其内容的大部分可读列表)——所以当该目录中的文件被添加、删除或重命名时,它会被修改。
【讨论】:
修改子目录时是否修改? @Flimm 它似乎只更新包含目录的 mtime 否则它会冒泡到根目录。 出于兴趣,哪些编辑器允许您直接打开目录?大多数人(甚至是ed
和cat
)似乎都在抱怨,或者提供了一个要打开的文件列表。
@naught101 vim 会很高兴地打开一个目录。
@Ether:它不会像实际读取目录的 inode 数据(或其他文件系统上的等效数据)那样“打开目录”。它只是为该目录提供了一个文件浏览器。以上是关于目录上次修改日期的主要内容,如果未能解决你的问题,请参考以下文章