我刚学会如何不断检查文件是否被修改:
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