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

関連情報