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

Pet*_*ill 14 macos watch fswatch

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

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

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

参考文献:

平台:

  • MacOS 10.9.5.

Enr*_*omo 38

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

  • 你想要排除一切.
  • 您想要包含具有给定扩展名的文件ext.

那是:

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

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

最后的命令是:

$ fswatch [options] -e ".*" -i "\\.ext$"
Run Code Online (Sandbox Code Playgroud)

如果你想不区分大小写的过滤器(如匹配eXt,Ext等等),只需添加-I选项.

  • 这在Linux上对我不起作用,我什么也没有。我可以在您的github存储库上创建一个详细的问题,但是自三月以来的每个问题都有0条回复。 (2认同)

Iva*_*dal 5

您可以观察单个扩展名的文件的更改,如下所示:

fswatch -e ".*" -i ".*/[^.]*\\.xxx$" .
Run Code Online (Sandbox Code Playgroud)

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

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

fswatch -e ".*" -i ".*/[^.]*\\.xxx$" -0 . | xargs -0 -n 1 -I {} echo "File {} changed"
Run Code Online (Sandbox Code Playgroud)

  • 您可以多次添加 `-i` 参数,例如 `fswatch -0 -o -e '.*' -i '.*/*\.xxx$' -i '.*/*\.yyy' 。| xargs -0 -n1 -I{} bash -c 'echo {}'` (2认同)