最准确方法是用stat提取mtime秒级unix时间戳后数值比较;其次可用find -newer直接判断;ls -lt仅适合人工粗略查看。mtime用于内容更新判断,ctime用于权限/所有者变更,atime用于访问审计。

直接比较两个文件的修改时间(mtime),用 stat 提取时间戳再数值比对,是最准确、最常用的方法。
用 stat 获取 Unix 时间戳后比较
Linux 文件的 mtime 底层是秒级 Unix 时间戳(从 1970-01-01 开始的整数),可直接做数字大小判断:
- 运行
stat -c '%Y' file1和stat -c '%Y' file2,分别获得两个文件的 mtime 秒数 - 在 shell 中用算术比较:
timestamp1=$(stat -c '%Y' file1)
timestamp2=$(stat -c '%Y' file2)
if [ "$timestamp1" -gt "$timestamp2" ]; then
echo "file1 更新"
else
echo "file2 更新或相等"
fi
用 find -newer 快速判断
find 的 -newer 选项专为这种场景设计,不需手动解析时间:
-
find file1 -newer file2:如果输出file1,说明 file1 的 mtime 比 file2 新 -
find file2 -newer file1:同理,输出则表示 file2 更新 - 该方法默认比对的是 mtime;如需比对 ctime 或 atime,可用
-newerXY(例如-newerca)
用 ls -l 粗略目视判断(适合人工快速查看)
执行 ls -lt --time-style=long-iso file1 file2,按修改时间倒序列出:
- 排在前面的文件 mtime 更近(即更新)
- 注意:若两文件修改时间相同,顺序取决于文件系统顺序,不可靠
- 此法仅作参考,不适合脚本自动化
区分比对哪类时间戳
三种时间戳用途不同,选错会影响判断结果:
- 比内容是否更新 → 用 mtime(最常见,如判断源码/配置是否被改过)
- 比权限或所有者是否变更 → 用 ctime(例如检查 chmod/chown 是否执行成功)
- 比是否被读取过 → 用 atime(较少用于“哪个更新”,多用于审计)











