$ 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
这在很大程度上取决于
ls
实施。在 GNU/Linux 系统上找到的这 4 个:GNU
ls
,来自 GNU 项目(来自 GNU coreutils集合)的一个。这是 Debian(Linux 或 kFreeBSD 内核)、Cygwin 或 Fedora 等 GNU 系统上常见的一种。Heirloom Toolchest
ls
是OpenSolaris 工具的一个端口:来自AT&T 开源集合
ls
,可能是内置的。另一个有很多花哨的扩展:ksh93
busybox(在大多数(通常嵌入式)基于 Linux 的系统上找到(或衍生)):
因此,其中,GNU 和 ast
ls
考虑了小数部分。其他的则回退到对同一秒内最后修改的文件进行词法比较。只有busybox才会ls
尊重-r
那里。在我的测试中,FreeBSD
ls
还支持亚秒级精度(前提是它们在 VFS 级别启用,请参阅vfs.timestamp_precision
sysctl)。zsh
的 glob(使用om
glob 限定符按修改时间排序,Om
用于反向排序)也需要全部时间:[ file1 -nt file2 ]
,凡支持也一般支持亚秒级粒度。关于 GNU 的
ls
实现,运行ls -l
将按字母顺序对文件进行排序,ls -lt
并将按照修改时间的顺序对文件进行排序,最新的在前,以达到底层文件系统支持的最大准确性。您可以使用该--full-time
选项进行检查。因此,要回答您的问题,是的,它可以最大限度地发挥作用,但只有当您使用
-t
(否则,它将默认为字母)并且正在使用支持它的实现时(有关更多详细信息,请参阅 Stéphane 的回答)。例如,ext4
可以支持纳秒精度,给定足够大的 inode 来存储所需的时间戳数据。你可以检查,如果你比较的输出
和
排序没有任何随意性。
是的,它会的。
为了测试,创建两个时间差小的文件:
检查修改时间:
该列表将使用这样的差异:
有了
--full-time
区别就清楚了。