![为什么“ls -all”显示某些文件的时间,而其他文件仅显示年份?](https://linux22.com/image/75582/%E4%B8%BA%E4%BB%80%E4%B9%88%E2%80%9Cls%20-all%E2%80%9D%E6%98%BE%E7%A4%BA%E6%9F%90%E4%BA%9B%E6%96%87%E4%BB%B6%E7%9A%84%E6%97%B6%E9%97%B4%EF%BC%8C%E8%80%8C%E5%85%B6%E4%BB%96%E6%96%87%E4%BB%B6%E4%BB%85%E6%98%BE%E7%A4%BA%E5%B9%B4%E4%BB%BD%EF%BC%9F.png)
答案1
默认情况下,文件时间戳以缩写形式列出,使用“Mar 30 2002”等日期表示非最近时间戳,使用不带年份和时间的日期(如“Mar 30 23:45”)表示最近时间戳。此格式可能会根据当前区域设置而变化,如下所述。
如果时间戳小于六个月,则被认为是最近的,并且不是未来的日期。如果今天的时间戳没有以最近的形式列出,则该时间戳是将来的,这意味着您可能存在时钟偏差问题,这可能会破坏依赖文件时间戳的程序(例如 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 --all
。没有理由l
在您的示例中使用 double 。如果你想查看每个文件的修改时间,可以使用ls -al --full-time
.
答案3
如果尝试显示的日期/时间是过去六个月内的,则
ls
显示日期和时间。如果时间早于六个月,或者是未来时间,则ls
显示日期和年份。
正如其他答案中所说,
ls -ll
相当于ls -l
, 并且ls -all
相当于ls -al
, 相当于ls -a -l
,ls -l -a
, 和ls -la
。
使用该-l
选项,ls
显示文件的修改日期/时间(包括目录,因为“一切都是文件”),除非
-c
还指定了,在这种情况下它显示更改时间,或者-u
还指定了,在这种情况下它显示访问时间。
看LS(1)了解更多信息。
答案4
为了获得旧文件的全职时间,我个人使用:
alias ls='ls --time-style=long-iso -Altr'
所以我本地没有这样的问题。然而,使用 ftp 仍然存在问题。我正在使用 lftp 的镜像选项将旧照片上传到我的网站,有些照片已上传,但它们没有更改,时间戳也没有更改。我试图弄清楚这是否是时区冲突,但我不能,因为默认情况下不显示文件时间,并且 ftp 服务器不接受 ls 选项“--time-style=long-iso”。