为什么“ls -all”显示某些文件的时间而其他文件只显示年份?

Jon*_*ell 40 ls

如果你发出ls -all命令,有些文件或目录有年份,有些有时间?为什么有的显示年份而有的显示时间?时间代表创建文件的时间吗?

在此处输入图片说明

Tho*_*ner 38

默认情况下,文件时间戳以缩写形式列出,对非最近时间戳使用“Mar 30 2002”之类的日期,对最近时间戳使用“Mar 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
Run Code Online (Sandbox Code Playgroud)

  • 值得注意的是,未来的时间也将显示年份而不是时间。如果您在时钟不同步的主机之间交换文件,就会发生这种情况。 (4认同)

Kir*_*ira 28

表示的时间是修改时间。请注意,ls -all这与 相同ls -l -a,与 不同ls --alll在您的示例中没有理由使用 double 。如果要查看每个文件的修改时间,可以使用ls -al --full-time.

  • 在 GNU `ls` 中正常使用 `--time-style=long-iso` 可能更有用。`--full-time` 显示秒,包括通常不需要的十进制点后的九个密码 (!)。 (5认同)

G-M*_*ca' 6

如果它尝试显示的日期/时间在过去六个月内,则 ls显示日期和时间。如果它早于六个月之前 - 或者如果是未来 -ls显示日期和年份。

正如其他答案中所述,

  • ls -ll等价于ls -l,并且
  • ls -all等价于ls -al, 等价于ls -a -l, ls -l -a, 和ls -la

使用该-l选项,ls显示文件的修改日期/时间(包括目录,因为“一切都是文件”),除非

  • -c 也指定,在这种情况下,它显示更改时间,或
  • -u 也指定,在这种情况下它显示访问时间。

有关详细信息,请参阅ls(1)