こっちではファイルのみを対象にしてたから気付かんかったが、ディレクトリ監視させたら、勝手に子ディレクトリも孫ディレクトリも捕捉してくれやがる。
散々、頭を悩ませて、ソースからインストールしてみたりしたものの、原因不明。
で、ソース内を、
$ find . -type f -exec grep -Hni recursive {} \;
してみたら、しれっと、 ./doc/fswatch.info
にこんな事が書いてあった。
5.2.1 Peculiarities
The ('--recursive', '-r') and ('--directories', '-d') options have no
effect when used with the FSEvents monitor since the FSEvents API
already monitors a directory's children by default.1
どーりで勝手に再帰的に見てくれやがるわ、、、
仕方ないので、正規表現で長々と exclude 指定して、
取り逃したのを、スクリプト内で捕捉2。
$ fswatch -E -e '\.DS_Store|README|20[0-9][0-9]' /PATH/TO/DIR
これだと、 ゴミ3と、README.txt とかと、 2015 みたいな年号で始まるファイルやディレクトリを無視してくれる。