我有一个使用 * 检查目录的脚本mdls
(按添加时间排序),它们执行一些操作。但是,mdls
它有点慢,所以我只想在绝对必要时运行它(即当目录内容发生变化时)。
我的想法是运行mdls
一次并缓存结果,执行一些操作来跟踪目录的状态。在随后的运行中,我会再次运行检查操作并将结果与我的结果进行比较。如果不同,请重新运行mdls
;如果没有,请使用缓存。
我正在考虑du '/dir/path' | tail -1
(如果目录大小保持等于字节,则内容可能没有改变)或ls '/dir/path' | md5'
.
我目前更倾向于该md5
解决方案,因为它对文件重命名具有弹性。但是,这两种解决方案都很老套,我想知道是否有更有效的方法(仍然很快)。
如果有帮助,最终该解决方案将在 ruby 脚本中使用。
*我不会将其发布到Ask Different,因为mdls
这不是重点。它可以是任何其他慢速命令。
如果检查新/删除文件(并忽略对现有文件的修改)就足够了,您可以使用目录本身的时间戳
mtime
。你可以得到它
stat
。这里的输出是自 1970 年初以来的秒数:如果要检查对文件的修改,可以检查它们的所有时间戳,并使用例如
sort
:(这接近BashFAQ 003,主要是关于查找具有最新时间戳/最大大小/等的文件,但包含一些相当复杂的解决方案。)