我正在使用fswatch
并且只希望在修改/创建扩展名为.xxx
的文件时触发它。文档和下面的第二个参考表明:
问题:用于排除所有不与.xxx
扩展名匹配的文件的正则表达式是什么?< / p>
答案 0 :(得分:30)
我fswatch
作者。它可能不是很直观,但fswatch
包括所有内容,除非排除过滤器另有说明。出现问题:您希望包含具有给定扩展名的所有文件。在排除和包含过滤器方面的改述:
ext
的文件。那是:
要排除所有内容,您可以添加与任何字符串匹配的排除过滤器:.*
。
要包含具有指定扩展名ext
的文件,您需要添加一个匹配任何以.ext
结尾的路径的包含过滤器:\\.ext$
。在这种情况下,你需要来转义点.
以匹配文字点,然后是扩展名ext
,然后匹配路径的 end 与$
。
最后的命令是:
$ fswatch [options] -e ".*" -i "\\.ext$"
如果您想要不区分大小写的过滤器(例如匹配eXt
,Ext
等),只需添加-I
选项。
答案 1 :(得分:2)
您可以观看单个扩展程序的文件更改,如下所示:
fswatch -e ".*" -i ".*/[^.]*\\.xxx$" .
这将排除所有文件,然后包括以.xxx
结尾的所有路径(并且还排除以点开头的文件)。
如果要对文件更改运行命令,可以添加以下内容:
fswatch -e ".*" -i ".*/[^.]*\\.xxx$" -0 . | xargs -0 -n 1 -I {} echo "File {} changed"