fswatch只能观看某个文件扩展名

时间:2016-01-11 02:19:23

标签: macos watch fswatch

我正在使用fswatch并且只希望在修改/创建扩展名为.xxx的文件时触发它。文档和下面的第二个参考表明:

  • 默认情况下接受所有路径,除非排除过滤器另有说明。
  • 包含过滤器可以覆盖任何排除过滤器。
  • 命令行中过滤器定义中的顺序无效。

问题:用于排除所有.xxx扩展名匹配的文件的正则表达式是什么?< / p>

参考文献:

平台:

  • MacOS 10.9.5。

2 个答案:

答案 0 :(得分:30)

fswatch作者。它可能不是很直观,但fswatch包括所有内容,除非排除过滤器另有说明。出现问题:您希望包含具有给定扩展名的所有文件。在排除和包含过滤器方面的改述:

  • 您想要排除所有内容
  • 您希望包含具有指定扩展名ext的文件。

那是:

  • 要排除所有内容,您可以添加与任何字符串匹配的排除过滤器:.*

  • 要包含具有指定扩展名ext的文件,您需要添加一个匹配任何以.ext结尾的路径的包含过滤器:\\.ext$。在这种情况下,你需要来转义点.以匹配文字点,然后是扩展名ext,然后匹配路径的 end $

最后的命令是:

$ fswatch [options] -e ".*" -i "\\.ext$"

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

答案 1 :(得分:2)

您可以观看单个扩展程序的文件更改,如下所示:

fswatch -e ".*" -i ".*/[^.]*\\.xxx$" .

这将排除所有文件,然后包括以.xxx结尾的所有路径(并且还排除以点开头的文件)。

如果要对文件更改运行命令,可以添加以下内容:

fswatch -e ".*" -i ".*/[^.]*\\.xxx$" -0 . | xargs -0 -n 1 -I {} echo "File {} changed"