【发布时间】:2012-04-07 14:07:08
【问题描述】:
是否可以在考虑更改文件内容的情况下计算目录的最后修改时间?
我们正在尝试查看一系列上传目录以确定用户 FTP 会话何时完成。
用户正在将一组文件上传到特定目录,我们想检测该目录中的最后一个文件在 N 分钟内没有更改的时间。 (我们使用它作为“FTP 会话完成”的代理。)
我们从这个开始查找空闲时间超过 5 分钟但不到 10 分钟的目录:
find . -mmin +5 -mmin -10 -type d -ls
此处使用的目录时间戳基于最近的文件添加到目录的时间。
我已阅读Directory last modified date,很明显,读取目录的 mtime 或 mmin 将不起作用,因为当目录中的文件更新其内容时它不会改变。因此,上述方法不起作用,因为如果最后一个文件是一个可能需要超过 10 分钟才能上传的大文件,那么在触发此操作时该目录将不会真正处于空闲状态(即所有文件都未更改)。
是否有基于 shell 的替代方案(最好是 find 命令的配置),它使用内部最后更改文件的 mtime 作为时间戳,但仍然在目录级别操作(即我们不想根据单个目录中的所有文件获得多次点击)?
【问题讨论】:
-
考虑另一种解决方案,因为我认为您不会找到您正在寻找的选项(也许您可以编写代码)。如果您从商业来源获取文件作为合同的一部分,要求他们发送一个特殊的“标志”文件作为最后一个文件并不是不合理的。然后你可以循环,寻找标志文件,当它到达时,你可以开始你的处理(这应该包括一个验证步骤,以确保你在那里的所有文件,它们与昨天不同,不为空(除非可以),标志文件可以是大小的文件列表
-
不幸的是,这些往往来自非常非技术的用户,他们只是将文件放入客户端 UI。我们正在寻求分发一个自定义客户端,该客户端将允许在幕后使用此标志方法,但我们仍然希望在自定义客户端部署不起作用的情况下作为备用方案
标签: shell directory find monitoring filesystemwatcher