发布于2026-07-07 阅读(0)
扫一扫,手机访问
在 Linux 系统下做文件监控,inotify 几乎是绕不开的内核级方案。它能实时捕捉文件或目录的创建、删除、修改等动作,准确又高效。Ubuntu 用户想上手的话,装个 inotify-tools 就能开箱即用。但很多朋友装完之后只停留在“跑个命令看看效果”的阶段,真正有价值的是如何把它跟现有工具链拧在一起,形成自动化工作流。今天就来拆几个常见的配合姿势。

先看最基础的组合——与 grep 搭档。监控到了事件,但可能只关心某类文件,比如只盯 .txt 的修改。把 inotifywait 的输出用管道喂给 grep 就好,非常直白:
inotifywait -m /path/to/directory -e modify --format '%w%f' | grep '\.txt$'
这样屏幕上就只会刷出 .txt 的修改路径,干净利落。
想要更精细的处理?引入 awk 是个好选择。比如你想统计目录下新创建的 .txt 文件数量,可以先把事件按文件名字分组再计数:
inotifywait -m /path/to/directory -e create --format '%w%f' | grep '\.txt$' | awk -F/ '{count[$NF]++} END {for (file in count) print file, count[file]}'
这条命令跑起来后,每当有新 .txt 文件生成,就会实时输出文件名和累计创建次数,对临时目录的“审计”场景特别有用。
还有一个很实用的组合——配合 xargs。检测到变化后立即触发后续操作,比如自动用 Vim 打开被修改的 .txt 文件:
inotifywait -m /path/to/directory -e modify --format '%w%f' | grep '\.txt$' | xargs vim -
当然,把 vim 换成 rsync、scp 或者你自己的编译脚本,就能实现文件一变就自动同步或构建的“自动化流水线”。
不过上面几种都是一行命令的玩法,真正灵活的是写个自定义脚本。把 inotifywait 的输出当作输入,在 while read 循环里做条件判断和逻辑处理。举个例子,写个 monitor.sh:
#!/bin/bash
DIRECTORY="/path/to/directory"
EXTENSION="\.txt$"
inotifywait -m "$DIRECTORY" -e create,modify,delete --format '%w%f' |
while read FILE; do
if [[ $FILE =~ $EXTENSION ]]; then
echo "File $FILE has been modified."
# 这里可以加上你的业务逻辑,比如调用备份、通知、解析等
fi
done
脚本给执行权限后直接跑:
chmod +x monitor.sh
./monitor.sh
从代码结构上就能看出,这种玩法的扩展性最好。你可以把判断条件换成正则、时间戳、文件大小,甚至在里面套一个 case 分支去处理不同事件类型。话说回来,核心技术其实就一点——把 inotifywait 的标准输出通过管道做成事件驱动的“触发器”,后面的逻辑完全可以按自己的需求自由组装。
以上就是几种常见的协作思路,从简单的 grep 筛选到完整脚本托管,覆盖了绝大多数日常场景。实际使用时,你完全可以把它跟 rsync 做实时同步,跟 ffmpeg 做自动转码,甚至跟 curl 挂钩触发 HTTP 回调。灵活度非常高,关键是理解“输出驱动”这个核心模型。
下一篇:AppImage安装步骤是什么
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8