watch命令通过周期性执行ls、find等命令实现文件数量轮询监控;例如每2秒统计当前目录条目数:watch -n 2 'ls -a | wc -l',或仅统计普通文件:watch -n 1 'find . -maxdepth 1 -type f | wc -l'。

watch 命令本身不直接监控文件变动,但可以配合 ls、find 或 stat 等命令,以固定间隔重复执行并显示结果,从而实现“视觉化”的目录文件数量轮询监控。
基础用法:每2秒查看当前目录文件数
最简方式是统计当前目录(不含子目录)的普通文件和目录总数:
watch -n 2 'ls -A | wc -l'说明:
- -n 2 表示每2秒刷新一次(可改为其他秒数,如 -n 0.5 表示半秒)
- ls -A 列出所有条目(含隐藏文件,但排除 . 和 ..)
- wc -l 统计行数,即条目总数
更精准统计:仅普通文件(不含目录)
若只想监控“文件”数量(排除子目录),可用 find:
watch -n 1 'find . -maxdepth 1 -type f | wc -l'说明:
- -maxdepth 1 限制只查当前目录,不递归子目录
- -type f 只匹配普通文件(排除目录、符号链接、设备文件等)
- 注意:点开头的隐藏文件(如 .bashrc)也会被计入
监控特定类型文件(如 .log 文件)
例如实时观察日志目录下新增的 .log 文件:
watch -n 3 'find /var/log -maxdepth 1 -name "*.log" | wc -l'说明:
- 把 /var/log 替换为你想监控的实际路径
- -name "*.log" 支持通配符,可换成 "*.conf"、"access_*" 等
- 若需忽略大小写,加 -iname
增强可读性:同时显示时间与变化提示
加时间戳便于定位变动时刻,再用简单逻辑标出增减趋势:
watch -n 2 'echo "$(date +%H:%M:%S) — $(find ./ -maxdepth 1 -type f | wc -l) files"'进阶提示:
- 按 Ctrl+C 退出 watch
- 按 Ctrl+G 查看 watch 内置帮助
- 加 -d 参数(如 watch -d -n 1 ...)可高亮显示每次变化的数值区域
- 如需长期后台运行并记录日志,建议改用 inotifywait(属于 inotify-tools),它才是真正的事件驱动型监控工具











