inotify:回显目录中哪个文件已更改

inotify:回显目录中哪个文件已更改

我刚学会如何不断检查文件是否被修改

while inotifywait -q -e modify filename >/dev/null; do
    echo "filename is changed"
    # do whatever else you need to do
done

如果我使用一个目录名我可以检查目录中的所有文件,而不是文件名:

while inotifywait -q -e modify directoryname >/dev/null; do
    echo "filename is changed"
    # do whatever else you need to do
done

但是我怎样才能得到echo已更改的文件的文件名呢?

答案1

inotifywait在监视目录上发出一组连续的事件,因此推荐的方法是将监视移出循环while并在新循环中查找事件,该循环查看inotify.请注意,这涉及删除--quiet标志,因为该read命令需要查看这些事件并通过标准输入读取它。

inotifywait -m -e modify "directoryname" | 
while read -r dir action file; do
    echo "The file '$file' appeared in directory '$dir' via '$action'"
done

相关内容