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

"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

答え2

表示時間は修正時間です。とはls -all同じものでls -l -a他のものですのでご注意くださいls --alllあなたの例でdoubleを使う理由はありません。各ファイルの修正時間を表示するには、を使用しますls -al --full-time

答え3

表示したい日時が過去6ヶ月以内の場合は、その ls日時が表示されます。時間が6ヶ月以上前または将来の場合は、ls日付と年が表示されます。

他の回答で述べたように、

  • ls -llls -l、および
  • ls -all、、、、とls -al同じです。ls -a -lls -l -als -la

この-lオプションを使用すると、lsファイル(「すべてがファイルであるため、ディレクトリを含む)の変更日時が表示されます。〜しない限り

  • -cまた、指定した場合は変更時間を表示します。
  • -uまた指定し、この場合接続時間を表示します。

バラよりLS(1)より多くの情報を知りたいです。

答え4

古いファイルのフルタイムを取得するには、個人的に以下を使用します。

alias ls='ls --time-style=long-iso -Altr'

だからローカルではそのような問題はありません。しかし、FTPの使用にはまだ問題があります。私はlftpのミラーオプションを使って古い写真を私のウェブサイトにアップロードしています。一部の写真はアップロードされましたが変更されておらず、タイムスタンプもありません。これがタイムゾーンの競合であるかどうかを判断しようとしていますが、ファイル時間がデフォルトで表示されず、FTPサーバーがlsオプション "--time-style = long-iso"を許可しないため、これはできません。

関連情報