inotifywait
includeオプションはなく、POSIX拡張正規表現は否定をサポートしていません。(FailedDevによる回答)
inotifyツールにパッチを適用して--include
オプションを取得できます。ただし、自分でコンパイルして保守する必要があります。(browndavによる回答)
より迅速な回避策は、を使用すること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
すべてのファイルが1つのディレクトリにある場合は、ostrokachの提案を使用することもできます。その場合、シェルの拡張はfindやxargsよりもはるかに簡単です。ただし、ここでも、新しく作成されたファイルは監視されません。
$ inotifywait -m ~/js/*.js