为什么 shell 不写好时间并告诉我年份?

Why the shell doesn't write the good hour and give me the year?

我有点困惑,我使用 shell 命令更改了一个文件的时间:

但是在 ls -lt 之后,我得到了这个:

  -rw-r--r--   1 CharleyD  staff       87  1 jun  2016 trial01
  drwxr-xr-x  15 CharleyD  staff      510  3 apr 12:57 Hybrid_proj

为什么 shell 不像 "Hybrid_proj" 目录那样为 "trial01" 写时间? trial01 文件的时间为:21:35,因此它不是空的。

的确,我在输出中搜索得到这个:

-rw-r--r--   1 CharleyD  staff       87  1 jun 21:35 trial01
drwxr-xr-x  15 CharleyD  staff      510  3 apr 12:57 Hybrid_proj

我该怎么做?

谢谢各位大侠指教! ;)

如果您的 ls 支持,请使用 -T 选项。

如果文件不是当年的,ls 默认显示年份而不是时间。时间设置仍然正确,只是格式不同。

要始终显示完整时间,使用 GNU ls,您可以使用 ls --time-style=long-iso -l:

$ ls --time-style=full-iso -l
total 0
-rw-r--r-- 1 user user 0 2017-04-04 13:20 newfile
-rw-r--r-- 1 user user 0 2016-04-03 12:34 oldfile

使用 BusyBox ls,您可以使用 -e:

$ busybox ls -e
total 0
-rw-r--r--    1 user    user            0 Tue Apr  4 13:20:42 2017 newfile
-rw-r--r--    1 user    user            0 Sun Apr  3 12:34:00 2016 oldfile

对于 macOS ls,您可以使用 -lT:

$ ls -lT 
total 0
-rw-r--r--  1 user  group  0 Apr  4 13:19:35 2017 myfile
-rw-r--r--  1 user  group  0 Apr  3 12:34:00 2016 oldfile

在每种情况下,您都会得到一个长时间戳,旧文件和新文件的格式相同。