inotifywait 不适用于一个 glob 模式,但适用于其他模式

inotifywait 不适用于一个 glob 模式,但适用于其他模式

这是我的脚本:

#!/bin/bash

. Load

inotifywait -m \
/Base/Qwik/**/*.jsx \
/Project/Web/src/Components/**/*.jsx \
/Project/Web/src/routes/**/*.jsx \
/Project/Web/src/routes/*.jsx \
-r \
-e modify \
-e move \
-e create \
-e delete \
-q \
--exclude "Exports.jsx" |
while IFS=' ' read File Event
do
    export File
    export Event
    Info $File $Event
    node /Project/Web/AstGenerator.js $File
done

inotifywait适用于除第一条路径之外的所有其他路径。并且 glob 模式是正确的。我可以使用find /Base/Qwik/**/*.jsx它来显示该目录中大量文件的列表。我还指定了-r递归操作的标志。

这到底是什么问题呢?

答案1

inotifywait适用于除第一条路径之外的所有其他路径。并且 glob 模式是正确的。

但只有启用globstar扩展程序时才有效。否则,它有时可能只会因为错误的原因而起作用。

我可以用find /Base/Qwik/**/*.jsx它来显示该目录中大量文件的列表。

通常在 shell 中globstar启用~/.bashrc以进行交互,您可能正在测试一些 glob,但这也不会在您运行的任何脚本中打开它。

您首先需要在脚本调用shopt -s globstar之前使用它来打开它inotifywait


我还指定了-r递归操作的标志。

递归仅适用于目录,不适用于单个文件。这样做毫无意义。

但是createmovedelete仅适用于监视中的文件目录,未观看文件,所以我认为您真正想做的只是观察带有递归标志的顶级目录。

我建议你阅读https://unix.stackexchange.com/questions/323901/how-to-use-inotifywait-to-watch-a-directory-for-creation-of-files-of-a-specific我认为这与您尝试做的事情类似。

相关内容