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


当前回答

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

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

其他回答

我最终为macOS做了这个。我相信这在很多方面都很糟糕:

#!/bin/sh
# watchAndRun
if [ $# -ne 2 ]; then
    echo "Use like this:"
    echo "   $0 filename-to-watch command-to-run"
    exit 1
fi
if which fswatch >/dev/null; then
    echo "Watching $1 and will run $2"
    while true; do fswatch --one-event $1 >/dev/null && $2; done
else
    echo "You might need to run: brew install fswatch"
fi

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

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

看门狗是一个跨平台的python API,用于监视文件/目录,它有内置的“诡计”工具,允许您在事件发生时触发动作(包括shell命令)(包括新添加的文件,删除的文件和更改的文件)。

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

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

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

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

如果你想使用NodeJS,你可以使用一个名为chokidar(实际上是chokidar-cli)的包来监视,然后使用rsync (Mac包含):

Rsync司令部:

$ rsync -avz——排除'some-file'——排除'some-dir'。/的/我的/目的地”

Chokidar cli(通过npm全局安装):

Chokidar \"**/*\" -c \"your-rsync-command-above\"