使用 inotifywait 监视文件夹并在找到文件时对文件运行脚本

使用 inotifywait 监视文件夹并在找到文件时对文件运行脚本

我希望有人能帮助我。我正在使用一个脚本,当指向文件夹中的某个文件时,将在同一文件夹中生成一个 JSON 文件。以下是用于运行当前逐个文件完成的脚本的命令。

bash /path/to/script/PageBuilder.sh "/path/to/file/cvinfo"

我希望inotifywait扫描子目录并查找每个cvinfo文件并在该文件上执行脚本。

这是我到目前为止所尝试过的但没有运气:

psttern="cvinfo"
inotifywait -m -r -e close_write --format %w%f /mnt/m/Comics/ | while read FILENAME; do
  if [[ "$FILENAME" == *${pattern}* ]]; then
    bash /mnt/m/PageBuilder/PageBuilder.sh "$FILENAME";
  fi
done&

目前,这只是设置手表,然后什么也没有,即使cvinfo文件移入和移出文件夹或进行编辑等。

我对这一切的了解完全来自我们的朋友谷歌,所以我对其工作原理只有非常基本的了解。我尝试过寻找其他帖子来提供帮助,但没有一个可以解决我的问题。

我使用的是 Windows,但在 BASH 终端中运行。

答案1

在研究相关主题时偶然发现了这一点...我意识到这是一篇旧帖子,但看起来您在 shell 变量中出现了拼写错误(psttern而不是pattern)。

我不是一个足够的专家,不知道如果不亲自测试它会如何失败,但它可能会默默地失败(并且由于变量${pattern}可能未初始化,因此它会为任何返回 true $FILENAME)。

相关内容