Linux查看文件最后修改时间 stat命令用法

落强吖_4125

落强吖_4125

2026-04-08

482人浏览

原创

直接查看 stat 输出中的 modify: 行即可获取文件最后修改时间(mtime),即文件内容最后一次被写入的时间;最简命令为 stat filename,或用 stat -c '%y' filename(gnu 系统)提取纯时间。

linux查看文件最后修改时间 stat命令用法

stat 命令怎么看文件最后修改时间(mtime)

直接看 stat 输出里的 Modify: 行,它对应的就是 mtime —— 文件内容最后一次被写入的时间。这不是“访问时间”(atime)或“状态变更时间”(ctime),别混淆。

最简用法:stat filename,输出里会明确标出三类时间:

  Access: 2024-03-15 10:22:34.123456789 +0800
  Modify: 2024-03-14 16:45:02.987654321 +0800  ← 这个就是你要的
Change: 2024-03-14 16:45:02.987654321 +0800
  • 如果只要 mtime 一行,用 stat -c '%y' filename(GNU 系统,如 Ubuntu/CentOS)
  • macOS 或 BSD 系统不支持 -c,得用 stat -f '%Sm' -t '%Y-%m-%d %H:%M:%S' filename
  • %y 输出带纳秒和时区;要只看年月日时分秒,用 %y 后加 | cut -d. -f1 截断

为什么 ls -l 显示的时间有时和 stat 的 Modify 不一致

ls -l 默认显示的是 mtime,但有例外:当文件没有写权限、或挂载了某些文件系统(如 NFS、某些 FUSE 实现),mtime 可能没及时刷新,而 ls 缓存或内核接口返回了旧值。更关键的是:ls -l 在 long format 下,如果 mtime 距今超过 6 个月,它会改显示年份而非时间 —— 看起来像“不对”,其实是格式策略。

  • 验证是否真不一致?运行 stat -c '%y' file 和 ls -l --time=modify file 对比
  • ls -l --time=modify 强制按 mtime 排序并显示,避免 atime/ctime 干扰
  • 遇到 NFS 挂载点,stat 返回的 mtime 可能滞后几秒,这是服务端同步延迟,不是命令问题

批量查多个文件的最后修改时间(脚本友好格式)

别用 stat * 直接展开,遇到空格或特殊字符文件名会崩。稳妥做法是用 find 配合 -printf,或用 shell 循环加引号。

  • GNU 系统推荐:find . -maxdepth 1 -type f -printf '%p\t%T@ %T+\n' | sort -k2nr —— %T@ 是 Unix 时间戳,%T+ 是可读格式,\t 分隔便于后续 awk 处理
  • 通用兼容写法:for f in *.log; do [ -f "$f" ] && echo "$(stat -c '%y' "$f") $f"; done | sort
  • 注意:stat -c 在非 GNU 系统(如 Alpine 默认 busybox)根本不存在,此时必须切到 stat -f 或换用 ls -ld --time=modify

stat 查出来的时间不准?先确认时区和文件系统行为

stat 显示的时间基于系统时区解释,但底层存储是 UTC。如果你在容器里、或跨时区挂载了远程文件系统(如 CIFS/Samba),看到的时间可能和宿主机或远端不一致,这不是 bug,是设计如此。

  • 检查当前时区:readlink /etc/localtime 或 date +%Z
  • ext4/xfs 正常情况 mtime 精确到纳秒;但某些嵌入式文件系统(如 squashfs、overlayfs)可能只支持秒级,stat 会补零
  • 如果文件刚被 cp 或 rsync 复制,且没加 -p 或 --preserve=timestamps,mtime 就是复制时刻,不是源文件原时间

mtime 本身不记录“谁改的”或“怎么改的”,只记时间点。需要溯源操作,得结合 auditd、inotify 或日志系统,stat 做不到。

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
sort排序函数用法
sort排序函数用法

sort排序函数的用法:1、对列表进行排序,默认情况下,sort函数按升序排序,因此最终输出的结果是按从小到大的顺序排列的;2、对元组进行排序,默认情况下,sort函数按元素的大小进行排序,因此最终输出的结果是按从小到大的顺序排列的;3、对字典进行排序,由于字典是无序的,因此排序后的结果仍然是原来的字典,使用一个lambda表达式作为key参数的值,用于指定排序的依据。

2023.09.04

1138

7

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.07.31

1669

3

python中的format是什么意思
python中的format是什么意思

python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.06.27

1211

7

printf用法大全
printf用法大全

php中文网为大家提供printf用法大全,以及其他printf函数的相关文章、相关下载资源以及各种相关课程,供大家免费下载体验。

2023.06.20

708

5

fprintf和printf的区别
fprintf和printf的区别

fprintf和printf的区别在于输出的目标不同,printf输出到标准输出流,而fprintf输出到指定的文件流。根据需要选择合适的函数来进行输出操作。更多关于fprintf和printf的相关文章详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.28

1009

10

硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

2023.10.19

3108

3

PHP接口编写教程
PHP接口编写教程

本专题整合了PHP接口编写教程,阅读专题下面的文章了解更多详细内容。

2025.10.17

4629

12

php8.4实现接口限流的教程
php8.4实现接口限流的教程

PHP8.4本身不内置限流功能,需借助Redis(令牌桶)或Swoole(漏桶)实现;文件锁因I/O瓶颈、无跨机共享、秒级精度等缺陷不适用高并发场景。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2025.12.29

3729

9

java接口相关教程
java接口相关教程

本专题整合了java接口相关内容,阅读专题下面的文章了解更多详细内容。

2026.01.19

426

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.6万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.4万人学习