当我 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