ls -lt将遵循精确的mtime还是仅遵循近似的mtime直到秒?


10

ls -l仅显示文件的修改时间戳,最长时间为秒。如果两个文件具有相同的时间戳(最高达一秒),但修改的时间不完全相同,则将ls -lt以准确的mtime的顺序或仅近似mtime的顺序对文件进行排序(直到m秒)(因此,文件之间的顺序可以是任意)?

Answers:


17

这在很大程度上取决于ls实施。在GNU / Linux系统上找到的这4个中:

$ touch a; touch c; touch b; stat -c %y a c b
2018-01-10 12:52:21.367640342 +0000
2018-01-10 12:52:21.371640148 +0000
2018-01-10 12:52:21.375639952 +0000
  • GNUls,来自GNU项目(来自GNU coreutils集合)。这是在Debian(Linux或kFreeBSD内核),Cygwin或Fedora等GNU系统上通常可以找到的那种。

    $ gnu-ls -rt
    a  c  b
    
  • ls传家宝工具箱中的工具的OpenSolaris端口:

    $ heirloom-ls -rt
    a  b  c
    
  • lsAT&T的开源集合,有可能建在ksh93。另一个带有很多奇特的扩展名:

    $ ast-ls -rt
    a  c  b
    $ PATH=/opt/ast/bin:$PATH ksh93 -c 'type ls; ls -rt'
    ls is a shell builtin version of /opt/ast/bin/ls
    a  c  b
    
  • busybox(在大多数(通常为嵌入式)基于Linux的系统上找到(或发现):

    $ busybox ls -rt
    c  b  a
    

因此,其中的GNU和ast ls考虑了分数的第二部分。其他文件则退回到词法比较中,以便在同一秒内最后修改文件。只有busybox才能兑现那里的ls荣誉-r

在我的测试中,FreeBSD ls还支持亚秒级精度(前提是它们已在VFS级别启用,请参见vfs.timestamp_precisionsysctl)。

zshomglob (使用glob限定符对修改时间Om进行排序,以反向顺序进行)也占用了全部时间:

$ echo *(Om)
a c b

[ file1 -nt file2 ],通常也支持亚秒级粒度


1
非GNU工具是否违反POSIX,或者它为排序指定了舍入?
凯文(Kevin)

2
什么是ast-ls?
Random832 '18

@ Random832,请参阅编辑。
斯特凡Chazelas

2
@Kevin,根据我对规范的阅读,他们在这方面符合规范。在AFAICT中,规范中没有任何内容可以忽略亚秒级的部分,并且POSIX提供了清晰的API来检索精确的时间戳。
斯特凡Chazelas

1
@ikkachu,你是对的。我没有注意到。参见编辑。确实改变了ast的结果。
斯特凡Chazelas

4

关于GNU的ls实现,运行ls -l将以字母顺序对文件进行排序,并ls -lt以修改时间的顺序对文件进行排序(从最新到最新),以底层文件系统支持的最大准确性。您可以使用--full-time选项进行检查。

因此,要回答您的问题,是的,它可以最大程度地扩展,但仅当您使用时-t(否则,它将默认为字母),并且正在使用支持该问题的实现(有关更多详细信息,请参阅 Stéphane的回答)。例如,在ext4足够大的inode可以存储所需的时间戳数据的情况下,可以支持纳秒精度。


2
您应该在答案中添加仅涉及GNU ls的内容。还有许多其他实现方式可能会有所不同。
罗兰·伊利格

@RolandIllig添加了

1

您可以检查一下是否比较了

ls -lat

ls -lat --full-time

排序没有任何随意性。


1

是的,它会的。

要测试,请创建两个时差很小的文件:

$ touch aa; sleep 0.2; touch bb

检查修改时间:

$ stat -c %y bb aa
2018-01-07 20:51:19.364248042 0000
2018-01-07 20:51:19.072248226 0000

该列表将使用以下差异:

$ ls -lt aa bb
-rw-r--r-- 1 user user 0 Jan  7 20:51 bb
-rw-r--r-- 1 user user 0 Jan  7 20:51 aa

有了--full-time差别就清楚了。

$ ls -lt --full-time aa bb
-rw-r--r-- 1 user user 0 2018-01-07 20:51:19.364248042 0000 bb
-rw-r--r-- 1 user user 0 2018-01-07 20:51:19.072248226 0000 aa

在最后一个方框中,我相信您有bbaa落后。
Alex
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.