我想在我的Mac上监视一个文件夹,然后执行一个bash脚本,将刚刚移动到或在监视目录中创建的任何文件/文件夹的名称传递给它。


当前回答

编辑:fsw已合并到fswatch。在这个答案中,任何对fsw的引用现在都应该读为fswatch。

我在c++中写了一个fswatch的替代品,叫做fsw,它有几个改进:

It's a GNU Build System project which builds on any supported platform (OS X v. >= 10.6) with ./configure && make && sudo make install Multiple paths can be passed as different arguments: fsw file-0 ... file-n It dumps a detailed record with all the event information such as: Sat Feb 15 00:53:45 2014 - /path/to/file:inodeMetaMod modified isFile Its output is easy to parse so that fsw output can be piped to another process. Latency can be customised with -l, --latency. Numeric event flags can be written instead of textual ones with -n, --numeric. The time format can be customised using strftime format strings with -t, --time-format. The time can be the local time of the machine (by default) or UTC time with -u, --utc-time.

焊:

fsw托管在GitHub上,可以克隆它的存储库:

    git clone https://github.com/emcrisostomo/fsw

安装的焊:

FSW可以通过以下命令安装:

    ./configure && make && sudo make install

进一步的信息:

我还写了一篇介绍性的博客文章,您可以在其中找到几个关于fsw如何工作的示例。

其他回答

编辑:fsw已合并到fswatch。在这个答案中,任何对fsw的引用现在都应该读为fswatch。

我在c++中写了一个fswatch的替代品,叫做fsw,它有几个改进:

It's a GNU Build System project which builds on any supported platform (OS X v. >= 10.6) with ./configure && make && sudo make install Multiple paths can be passed as different arguments: fsw file-0 ... file-n It dumps a detailed record with all the event information such as: Sat Feb 15 00:53:45 2014 - /path/to/file:inodeMetaMod modified isFile Its output is easy to parse so that fsw output can be piped to another process. Latency can be customised with -l, --latency. Numeric event flags can be written instead of textual ones with -n, --numeric. The time format can be customised using strftime format strings with -t, --time-format. The time can be the local time of the machine (by default) or UTC time with -u, --utc-time.

焊:

fsw托管在GitHub上,可以克隆它的存储库:

    git clone https://github.com/emcrisostomo/fsw

安装的焊:

FSW可以通过以下命令安装:

    ./configure && make && sudo make install

进一步的信息:

我还写了一篇介绍性的博客文章,您可以在其中找到几个关于fsw如何工作的示例。

我有一个关于这个的主旨,用法很简单

watchfiles <cmd> <paths...>

为了说明,下面的命令将在每次file1或file2更改时回显Hello World;默认的间隔检查是1秒

watchfiles 'echo Hello World' /path/to/file1 /path/to/file2 

如果我想每5秒检查一次,我可以使用-t标志

watchfiles -t 'echo Hello World' /path/to/file1 /path/to/file2 

-v开启verbose模式,显示调试信息 -q使监视文件安静地执行(将显示#,以便用户可以看到程序正在执行) -qq使监视文件完全安静地执行 -h显示帮助和用法

https://gist.github.com/thiagoh/5d8f53bfb64985b94e5bc8b3844dba55

我可以全心全意地推荐使用watchexec。内置Rust和它只是工作™,无论你在哪个平台上!还有简单的CLI选项。

这里有一个简单的单行替代方案,供那些没有watch命令但又想每3秒执行一次命令的用户使用:

而:;做您的命令;睡眠3;完成

这是一个无限循环,基本上与执行以下操作相同:

看-n3你的命令

我的fswatch的分支提供了inotifywait -m的功能,稍微少一点(没有等待,更多!)我在Linux上使用inotifywait…)解析友好的输出有很多问题。

它是对原始fswatch的改进,因为它通过STDOUT发送更改后的文件的实际路径,而不是要求您提供它所派生的程序。

它是我用来实现自动化的一系列可怕的bash脚本的坚实基础。

(这是跑题了)Linux上的inotifywait,另一方面,需要大量的拼凑,我仍然没有找到一个好方法来管理它,尽管我认为基于node.js的东西可能是票据。