"ls -all"が一部のファイルの場合は時間を表示し、他のファイルの場合は年のみを表示するのはなぜですか?

このコマンドを実行すると、ls -all一部のファイルには年は含まれているが時間は含まれていないタイムスタンプが表示され、他のファイルには年以外の時間は含まれているタイムスタンプが表示されます。なぜこれが起こるのですか?タイムスタンプはファイルが作成された時間を表しますか?

ここに画像の説明を入力してください。

ベストアンサー1

デフォルトでは、ファイルタイムスタンプは最近のタイムスタンプではない場合は「2002年3月30日」などの日付を使用し、最近のタイムスタンプの場合は年と時間のない日付(例:「3月30日23:45」)を使用して短縮形式で一覧表示されます。この形式は、以下の説明に示すように、現在のロケールによって異なります。

タイムスタンプが6ヶ月未満の場合、最近の日付と見なされ、将来の日付ではありません。今日のタイムスタンプが最新の形式でリストされていない場合、タイムスタンプは将来のものです。これは、ファイルタイムスタンプに依存するプログラム(makeなど)を中断する可能性があるクロック歪みの問題がある可能性があることを意味します。

源泉:http://www.gnu.org/software/coreutils/manual/coreutils.html#Formatting-file-timestamps

表示するには:

$ for i in {1..7}; do touch -d "$i months ago" file$i; done
$ ls -l
total 0
-rw-r--r-- 1 terdon terdon 0 Sep 21 02:38 file1
-rw-r--r-- 1 terdon terdon 0 Aug 21 02:38 file2
-rw-r--r-- 1 terdon terdon 0 Jul 21 02:38 file3
-rw-r--r-- 1 terdon terdon 0 Jun 21 02:38 file4
-rw-r--r-- 1 terdon terdon 0 May 21 02:38 file5
-rw-r--r-- 1 terdon terdon 0 Apr 21  2015 file6
-rw-r--r-- 1 terdon terdon 0 Mar 21  2015 file7

おすすめ記事