我正在使用fswatch
并且只希望在修改/创建带有扩展名的文件等时触发它.xxx
。下面的文档和第二个参考表明:
- 默认情况下接受所有路径,除非排除过滤器另有说明。
- 包含过滤器可以覆盖任何排除过滤器。
- 命令行中过滤器定义的顺序没有影响。
问题:用于排除所有与扩展名不匹配的文件的正则表达式是什么?.xxx
参考:
平台:
- macOS 10.9.5。
我正在使用fswatch
并且只希望在修改/创建带有扩展名的文件等时触发它.xxx
。下面的文档和第二个参考表明:
问题:用于排除所有与扩展名不匹配的文件的正则表达式是什么?.xxx
我是fswatch
作者。它可能不是很直观,但fswatch
包含所有内容,除非排除过滤器另有说明。解决您的问题:您希望包含具有给定扩展名的所有文件。用排除和包含过滤器重新表述:
ext
。那是:
要排除所有内容,您可以添加匹配任何字符串的排除过滤器:.*
.
要包含具有给定扩展名的文件,请添加一个包含过滤器,以匹配以:ext
结尾的任何路径。在这种情况下,您需要转义点以匹配文字点,然后是扩展名,然后将路径的结尾与..ext
\\.ext$
.
ext
$
最后的命令是:
$ fswatch [options] -e ".*" -i "\\.ext$"
如果您想要不区分大小写的过滤器(例如匹配eXt
、Ext
等),只需添加该-I
选项。
您可以像这样监视单个扩展名的文件的更改:
fswatch -e ".*" -i ".*/[^.]*\\.xxx$" .
这将排除所有文件,然后包括所有以.xxx
(并排除以点开头的文件)的路径。
如果要对文件更改运行命令,可以添加以下内容:
fswatch -e ".*" -i ".*/[^.]*\\.xxx$" -0 . | xargs -0 -n 1 -I {} echo "File {} changed"