我正在使用fswatch
,并且只希望在修改/创建扩展名为.xxx
的文件时触发它。文档和下面的第二个参考文献指出:
默认情况下,所有路径都被接受,除非排除过滤器另有说明。
包含过滤器可以覆盖任何排除过滤器。
命令行中的过滤器定义中的顺序无效。
问题:用于排除所有与.xxx
扩展名不匹配的文件的正则表达式是什么?
参考文献:
Is there a command like "watch" or "inotifywait" on the Mac?
Watch for a specific filetype
平台:
MacOS 10.9.5。
最佳答案
我是fswatch
作者。它可能不是很直观,但是fswatch
包括所有内容,除非排除过滤器另有说明。遇到您的问题:您希望包括具有给定扩展名的所有文件。改写排除和包含过滤条件:
您想排除一切。
您要包括具有给定扩展名ext
的文件。
那是:
要排除所有内容,您可以添加与任何字符串匹配的排除过滤器:.*
。
要包含具有给定扩展名ext
的文件,请添加一个包含匹配项以匹配任何以.ext
结尾的路径的包含过滤器:\\.ext$
。在这种情况下,您需要对点.
进行转义以匹配文字点,然后对扩展名ext
进行转义,然后将路径的末尾与$
进行匹配。
最后的命令是:
$ fswatch [options] -e ".*" -i "\\.ext$"
如果您要使用不区分大小写的过滤器(例如,匹配
eXt
,Ext
等),只需添加-I
选项。关于macos - fswatch只观看特定的文件扩展名,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34713278/