find -newer 通过基准文件(如 /etc/passwd 或 /etc/nginx/nginx.conf)的 mtime 精确查找其后修改的文件,需限定目录范围、过滤类型(-type f)、排除干扰,并确保基准文件mtime有效且时钟同步。

直接用 find -newer 比较时间戳,核心是选对“基准文件”——通常用系统关键配置文件(如 /etc/passwd、/etc/nginx/nginx.conf)作为时间锚点,找出之后被修改过的日志和业务文件。
明确基准文件并确认其mtime
系统配置文件的修改时间(mtime)就是判断依据。先查清楚它的最后修改时间:
$ stat -c "%y %n" /etc/passwd
输出类似:2024-04-10 14:22:33.123456789 +0800 /etc/passwd
确保该文件近期确实被更新过(比如刚改过用户权限或重载过服务),否则结果可能为空或过大。
定位目标目录范围,避免全盘扫描
应用日志和业务文件通常集中在固定路径,不建议无脑扫 /。常见位置包括:
-
/var/log/(系统及应用日志) -
/opt/appname/logs/或/srv/myapp/logs/(自定义业务日志) -
/data/business/、/home/appuser/workspace/(业务数据或生成文件)
例如只查 Nginx 配置变更后影响的日志和站点文件:
$ find /var/log/nginx /usr/share/nginx/html -newer /etc/nginx/nginx.conf
过滤文件类型与排除干扰项
加条件提升精准度:
- 只找普通文件(排除目录、socket等):
-type f - 按扩展名缩小范围(如日志常用
.log、.out;业务文件可能是.json、.csv、.xml):-name "*.log" -o -name "*.json" - 排除临时或缓存文件(如
*~、.swp、/tmp子目录):-not -path "*/tmp/*" -not -name "*~"
组合示例(查 Tomcat 配置更新后所有相关日志和部署文件):
$ find /var/log/tomcat /opt/tomcat/webapps -type f -newer /opt/tomcat/conf/server.xml \( -name "*.log" -o -name "*.war" -o -name "*.properties" \) 2>/dev/null
注意时间精度与时区一致性
-newer 比较的是文件的 mtime(内容修改时间),不是 ctime(元数据变更)或 atime(访问时间)。需确保:
- 基准文件和目标文件在同一个文件系统上(跨挂载点可能因 NFS/容器卷导致时间不同步)
- 系统时钟准确,尤其在容器或虚拟机中检查是否启用了时间同步(
timedatectl status) - 若发现“该更新的没列出来”,可用
stat对比几个样本文件的 mtime,确认是否真晚于基准
不复杂但容易忽略。











