为什么 ls 和 stat 显示不同的修改日期?

为什么 ls 和 stat 显示不同的修改日期?

当我 ls 文件时,最后修改日期显示为 11 月 29 日 11:13,但 stat 显示文件在 12 月 3 日更改,为什么 ls 和 stat 输出的日期不同。

-rw-rr 1 iadm sys     266240 Nov 29 11:13 log_backup_1_0_26337600_26341632.1417281197106
-rw-rr 1  iadm sys    1585152 Nov 29 11:13 log_backup_0_0_0_0.1417281197131


stat log_backup_0_0_0_0.1417281197131
  File: `log_backup_0_0_0_0.1417281197131'
  Size: 1585152         Blocks: 3096       IO Block: 32768  regular file
Device: 22h/34d Inode: 17232       Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1002/  iadm)   Gid: (   79/  sys)
Access: 2014-11-29 11:13:17.000000000 -0600
Modify: 2014-11-29 11:13:17.000000000 -0600
**Change: 2014-12-03 09:56:57.618281823 -0600**
 Birth: -


stat log_backup_1_0_26337600_26341632.1417281197106
  File: `log_backup_1_0_26337600_26341632.1417281197106'
  Size: 266240          Blocks: 520        IO Block: 32768  regular file
Device: 22h/34d Inode: 17231       Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1002/  iadm)   Gid: (   79/  sys)
Access: 2014-11-29 11:13:17.000000000 -0600
Modify: 2014-11-29 11:13:17.000000000 -0600
**Change: 2014-12-03 09:56:57.606281658 -0600**
 Birth: -

答案1

ls -l仅显示文件内容上次修改的时间,另外stat还提供文件系统结构中文件上次更改的时间(inode 修改)。

例如,让我们比较文件名更改之前和之后的时间戳:

$ touch abc.txt
$ stat abc.txt

(...)
Access: 2014-12-05 19:23:18.515079101 +0000
Modify: 2014-12-05 19:23:18.515079101 +0000
Change: 2014-12-05 19:23:18.515079101 +0000

$ mv abc.def def.txt
$ stat def.txt

(...)
Access: 2014-12-05 19:23:18.515079101 +0000
Modify: 2014-12-05 19:23:18.515079101 +0000
Change: 2014-12-05 19:24:45.306744159 +0000

请注意相同的“修改”时间,但上次“更改”的时间已更改。

如果您想ls使用使用-lc选项查看“更改”时间,请从man ls

-c 与 -lt 一起使用:排序并显示 ctime(文件状态信息最后一次修改的时间) 与 -l 一起使用:显示 ctime 并按名称排序 否则:按 ctime 排序,最新的在前

所以:

$ ls -l def.txt
-rw-r--r-- 1 jimmij jimmij 0 Dec  5 19:23 def.txt
$ ls -lc def.txt
-rw-r--r-- 1 jimmij jimmij 0 Dec  5 19:24 def.txt

相关内容