是否可以计算目录的最后修改时间,同时考虑到更改的文件内容?
我们正在尝试观察一系列上传目录以确定用户 FTP session 何时完成。
用户正在将一组文件上传到特定目录,我们希望检测该目录中的最后一个文件在 N 分钟内没有更改的时间。 (我们使用它作为“FTP session 完成”的代理。)
我们以此开始查找空闲时间超过 5 分钟但少于 10 分钟的目录:
find . -mmin +5 -mmin -10 -type d -ls
此处使用的目录时间戳基于最近文件添加到目录的时间。
我已阅读Directory last modified date很明显,读取目录的 mtime 或 mmin 是行不通的,因为当目录中的文件内容更新时它不会改变。因此,上述内容将不起作用,因为如果最后一个文件是一个大文件,可能需要超过 10 分钟才能上传,那么当此触发时,目录将不会真正处于空闲状态(即所有文件都未更改)。
是否有基于 shell 的替代方案(最好是 find
命令的配置),它使用内部最后更改的文件的 mtime 作为时间戳,但仍然在目录级别操作(即我们不想根据单个目录中的所有文件获得多次点击)?
最佳答案
我同意@shellter 的评论,即标志文件是最好的方法。这取决于您的用户是否同意上传该文件。
查找当前目录下最新的文件
find . -type f -printf "%T@ %p\n" | sort -nr | head -1
输出有 2 个字段:
- 自纪元以来的时间(以秒为单位),带小数微秒
- 文件的相对路径
关于shell - 基于包含的文件内容的目录的上次更改时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9832004/