inotifywait
没有包含选项,POSIX 扩展正则表达式不支持否定。(由FailedDev回答)
您可以修补 inotify 工具以获得--include
选项。但是你需要自己编译和维护它。(布朗达夫回答)
更快的解决方法是使用grep
.
$ inotifywait -m -r ~/js | grep '\.js$'
但是,如果将输出通过管道传输到另一个命令,请注意 grep 的缓冲。添加--line-buffered
以使其与while read
. 这是一个例子:
$ inotifywait -m -r ~/js | grep '\.js$' --line-buffered |
while read path events file; do
echo "$events happened to $file in $path"
done
如果您只想查看已经存在的文件,您还可以使用find
生成文件列表。它不会观看新创建的文件。
$ find ~/js -name '*.js' | xargs inotifywait -m
如果您的所有文件都在一个目录中,您也可以使用ostrokach的建议。在这种情况下,shell 扩展比 find 和 xargs 容易得多。但同样,它不会观看新创建的文件。
$ inotifywait -m ~/js/*.js