`ls -lt` 将遵循准确的 mtimes 还是仅遵循大约 mtimes 到秒?

Tim*_*Tim 10 ls timestamps

ls -l只显示文件的修改时间戳到秒。如果两个文件具有相同的时间戳,但不完全在同一时间进行修改,则将ls -lt按照准确的 mtimes 或直到秒的近似 mtimes 的顺序对文件进行排序(因此文件之间的顺序可以是随意的)?

Sté*_*las 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
Run Code Online (Sandbox Code Playgroud)

因此,其中,GNU 和 astls考虑了小数第二部分。其他人回退到同一秒内最后修改的文件的词法比较。只有busyboxls尊重-r那里。

在我的测试中,FreeBSDls还支持亚秒级精度(如果它们在 VFS 级别启用,请参阅vfs.timestamp_precisionsysctl)。

zsh的 globs(使用omglob 限定符按修改时间Om排序,反向排序)也需要全部时间:

$ echo *(Om)
a c b
Run Code Online (Sandbox Code Playgroud)

[ file1 -nt file2 ],支持的地方一般也支持亚秒级粒度

  • 什么是 ast-ls? (2认同)
  • @Kevin,根据我对规范的阅读,他们在这方面 _not_ 兼容。AFAICT,规范中没有任何内容允许忽略亚秒部分,POSIX 提供了一个清晰的 API 来检索精确的时间戳。 (2认同)