我正在使用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$"


如果您要使用不区分大小写的过滤器(例如,匹配eXtExt等),只需添加-I选项。

关于macos - fswatch只观看特定的文件扩展名,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34713278/

10-13 22:55