最可靠的方式是用 stat 提取 unix 时间戳(秒级整数)比较:stat -c '%y' file1 和 stat -c '%y' file2 输出纯数字,可直接数值比对;find -newer 语义清晰适合脚本判断;date -r 仅适用于人工核对可读时间。

直接比较两个文件的修改时间,最可靠的方式是用 stat 提取 Unix 时间戳(秒级整数),再做数值比对——避免格式、时区或显示截断带来的误判。
用 stat 获取精确时间戳并比较
stat -c '%Y' file 输出的是 mtime 的 Unix 时间戳(从 1970-01-01 起的秒数),纯数字,可直接用于大小判断:
- 查看 file1 修改时间戳:
stat -c '%Y' file1 - 查看 file2 修改时间戳:
stat -c '%Y' file2 - 一行命令直接比大小:
[[ $(stat -c '%Y' file1) -gt $(stat -c '%Y' file2) ]] && echo "file1 更新" || echo "file2 更新"
用 find -newer 快速判断相对新旧
find 的 -newer 测试条件专为这类对比设计,语义清晰、无需手动解析:
-
find file1 -newer file2:若输出file1,说明 file1 比 file2 新(mtime 更晚) -
find file2 -newer file1:若输出file2,说明 file2 更新 - 注意:该命令不报错也不输出空行,仅当满足条件时才打印路径,适合脚本中用
if判断
用 date -r 看可读时间(适合人工核对)
如果只是快速 eyeball 对比,date -r 显示本地时区下的易读时间:
-
date -r file1和date -r file2分别执行,肉眼比对年月日时分 - 优点是直观;缺点是受 locale 和格式影响,不适合自动化,且纳秒级差异不可见
注意事项
所有方法默认比对的是 mtime(内容修改时间),即文件数据最后一次被写入的时间。如果你关心的是权限变更(如 chmod)、属主调整(chown)等元数据改动,请改用 -c(ctime)或 -%Z 配合 stat,但需明确业务意图——mtime 和 ctime 是不同事件。











