要找出比应用发布时间更新的报表和缓存文件,需先用主程序或关键配置文件的mtime作为基准,再用find -newer匹配/var/log/reports、/tmp/myapp_cache等路径下符合条件的.csv/.xlsx/report_.log/.tmp/.cache/cache_文件。

要使用 find -newer 找出比某个应用发布时间**更新**的业务报表和临时缓存文件,核心是:先获取该应用的**精确时间戳**(通常是主程序或关键配置文件的修改时间),再用 -newer 以它为基准筛选目标文件。
1. 确定“应用发布时间”的可靠时间源
-newer 比较的是文件的 mtime(修改时间),不是安装时间或打包时间。Linux 中没有直接的“应用发布时间”,需选一个能代表上线时刻的文件:
- 首选:应用主二进制文件(如
/opt/myapp/bin/server)——上线部署时通常会覆盖更新,mtime 即上线时刻 - 次选:关键配置文件(如
/etc/myapp/app.conf)——若每次发布都同步更新配置 - 避免:日志文件、pid 文件、符号链接(mtime 不稳定或无意义)
2. 构建 find 命令匹配业务报表与缓存文件
假设报表存于 /var/log/reports/,缓存存于 /tmp/myapp_cache/ 或 /var/cache/myapp/,且应用主程序为 /opt/myapp/bin/launcher:
命令示例:
find /var/log/reports /tmp/myapp_cache /var/cache/myapp \ -type f \ -newer /opt/myapp/bin/launcher \ \( -name "*.csv" -o -name "*.xlsx" -o -name "report_*.log" \) \ -o \ \( -name "*.tmp" -o -name "*.cache" -o -name "cache_*" \) 2>/dev/null
说明:
-
-type f:只匹配普通文件,排除目录或设备文件 -
-newer /opt/myapp/bin/launcher:mtime 晚于 launcher 文件 - 用
\( ... \) -o \( ... \)分组逻辑:满足“是报表”或“是缓存” -
2>/dev/null:忽略权限不足等报错,保持结果干净
3. 若需更灵活的时间基准:用 touch 创建参考空文件
当无法找到合适的时间源文件时,可手动创建一个带指定时间戳的参考文件:
- 查出应用上线时间(如 2024-05-20 14:30:00),执行:
touch -d "2024-05-20 14:30:00" /tmp/app_release_ref - 再用
-newer /tmp/app_release_ref替换原参数 - 用完后记得删除:
rm /tmp/app_release_ref
4. 验证与注意事项
- 检查参考文件时间:
stat /opt/myapp/bin/launcher | grep Modify,确认其 mtime 符合预期 -
-newer是严格“晚于”,不包含“等于”。如需含等于,改用-newermt(GNU find)配合"$(stat -c '%y' file)"构造时间字符串 - 注意文件系统时区一致性:所有涉及文件应在同一时区挂载点下,避免跨 NFS/NAS 出现时间偏差
- 临时文件可能被自动清理,建议搭配
-print0 | xargs -0 ls -lt排序查看最新几个


















