如何使用FSWatch观看Mac OSX上的文件更改?

我正在尝试使用fswatch从linux bash脚本中翻译以下行,以便能够在Mac OSX上运行它:

inotifywait -r -m 'myfolder/' | while read MODFILE
do
    echo "something"
done

由于inotifywait不适用于Mac OSX,我想用FSWatch的第一行代替。 尽管README引用了fswatch手册页,但它并没有提供链接,并且在互联网上搜索并没有给我带来任何帮助。 所以我尝试了一下。

我创建了一个名为testfswatch/的文件夹,并试着在父文件夹中运行以下命令,然后添加和更改testfswatch/文件夹中的文件:

fswatch -o testfswatch/ | echo "LALA"
fswatch -o testfswatch/ | someSimpleProgram
fswatch -o testfswatch/ | xargs -n1 -I{} echo "LALA"
fswatch -o testfswatch/ | xargs -n1 -I{} ./someExecutable
fswatch -o testfswatch/ | xargs -n1 echo "LALA"
fswatch -o testfswatch/ | xargs -n1 someExecutable
// And more variations of the above

但是,当我更改或添加tesfswatch/文件夹中的文件时,这些命令似乎都不会执行任何操作。

有人知道我在这里做错了吗? 欢迎所有提示!


与1.0和更高版本相比,fswatch的1.0之前的版本使用略微不同的调用语法。 确保您运行的是1.0以后的版本,如果您的版本比此版本旧,则可能需要升级。


正如Bushmills已经说过的那样, fswatch语法在与fsw合并后的v。> = 1.x中发生了变化:这个决定背后的原理是允许使用UNIX用户感觉自然的语法来监视多个路径。

此外,添加了一个特定的选项( -0 ),以允许fswatch输出到另一个程序的输入的简单且不容易出错的管道:使用-0fswatch将使用NUL )字符分隔记录(沿着行还有其他的工具,比如findxargs )。

在你的情况下,你可能想要使用下面的语法(根据你的需要微调):

$ fswatch -0 [opts] [paths] | xargs -0 -n 1 -I {} [command]

这条路:

  • fswatch -0将使用NUL字符拆分记录。
  • xargs -0将使用NUL字符拆分记录。 这是正确匹配fswatch阻抗所fswatch
  • xargs -n 1将调用command的每一个命令。 如果您想要每x记录一次,请使用xargs -nx
  • xargs -I {}将用分析的参数替换command出现的{} 。 如果您正在运行的命令不需要事件路径名称,只需删除此选项。
  • 希望这可以帮助。

    链接地址: http://www.djcxy.com/p/56773.html

    上一篇: How to watch file changes on Mac OSX using FSWatch?

    下一篇: support' on a Mac. Where can I find it?