这是我的脚本:
#!/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
递归操作的标志。
递归仅适用于目录,不适用于单个文件。这样做毫无意义。
但是create
,move
和delete
仅适用于监视中的文件目录,未观看文件,所以我认为您真正想做的只是观察带有递归标志的顶级目录。
我建议你阅读https://unix.stackexchange.com/questions/323901/how-to-use-inotifywait-to-watch-a-directory-for-creation-of-files-of-a-specific我认为这与您尝试做的事情类似。