我用来inotifywait
跟踪单个文件(而不是目录)上的事件,因为
$ inotifywait -m -e open -e close -e move myfile.txt
当我打开并编辑文件时,日志会按预期打印。
Setting up watches.
Watches established.
myfile.txt OPEN
myfile.txt CLOSE_NOWRITE,CLOSE
但是当我重命名文件时,inotify 永远不会发出MOVED_IN
、MOVED_FROM
事件(甚至不会DELETE_SELF
)。另一方面,如果我观察目录包含myfile.txt
,而不是单个文件,事件照常发出。
对我来说,一个奇怪的点是,打开和关闭重命名的文件仍然会记录事件。
myfile.txt OPEN
myfile.txt CLOSE_NOWRITE,CLOSE
此时,我的文件不存在,myfile.txt
但有另一个名称。值得注意的是,inotify 不会跟踪与新创建的 相关的任何事件myfile.txt
。
我的问题是:
如何使用 正确跟踪单个文件的“重命名”事件
inotifywait
,而不监视完整目录?如何获取所监视的单个文件的当前名称?
--format "%f"
选项似乎总是打印传递给的原始文件名,inotifywait
即使文件被重命名,如上所示。我正在寻找一种适用于文件系统中分散的一组给定文件的“重命名历史记录器”。是否有任何 inotify 的替代品可用于此特定目的?