bash - 如何捕获更改文件夹中文件的事件?

标签 bash shell unix

当 UNIX 中的文件夹内容发生更改(删除、添加或编辑)时,是否会生成任何事件,并且可以捕获该事件来触发另一个脚本吗?

最佳答案

如果您使用的是 Linux,则可以使用 inotify子系统来捕捉这类事情。有针对 Python、Perl 等的 inotify 绑定(bind),或者您也可以在 shell 脚本中使用 inotifywait 程序(inotify-tools 包的一部分)。

例如,如果我运行 inotifywait -m/tmp,它将监视 /tmp 的更改。如果我创建一个文件,我会看到:

/tmp/ CREATE foo
/tmp/ OPEN foo
/tmp/ ATTRIB foo
/tmp/ CLOSE_WRITE,CLOSE foo

如果我删除该文件,我会看到:

/tmp/ DELETE foo

您可以编写一个 shell 脚本,从 inotifywait 读取这些通知并相应地对其进行操作。

关于bash - 如何捕获更改文件夹中文件的事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21592607/

相关文章:

bash 中的字符串替换 (${s//$foo/$bar}) 不适用于反斜杠

c++ - 从 c/c++ 代码更改 Linux 用户运行时

shell - 如何在shell脚本中创建堆栈?

java - 从 PHP 与 shell 调用 Java - java.lang.NoClassDefFoundError :

unix - FIFO 是否保留消息边界?

mysql - 使用 mysqldump 的特殊字符转义密码变量

linux - 在 linux 中替换文件中的单引号和双引号

bash - 如何将日期范围作为变量传递给 awk

git - 使用与在 Post Step 中的 Shell 脚本中克隆相同的 http git 凭据

linux - Unix Shell 脚本 - 命令中的错误