在 Unixls -l
中,我们提供了一个长长的文件和目录列表。
ls -lt
另外按时间排序文件,即最后更改或修改。这是要区分的,
ls -lu
它给出了长列表和访问时间,并从 az 对文件进行排序,而不是按最后一次访问。我希望ls -lu
按访问时间对文件进行排序,但为此我需要:
ls -lut
它以长格式提供列表,打印访问时间,并按访问时间排序。
ERGO,
-t
必须表示按时间排序,无论是修改时间还是访问时间,而,
-u
表示仅列出访问时间。这并不意味着按访问时间列出和排序。没有任何进一步的论据,-t
似乎意味着按修改时间列出并按修改时间排序。以上是否正确。如果没有,我哪里错了?
ls
手册页可以帮助阐明这些选项。该
-l
选项控制输出格式,生成“长”列表。该
-t
选项按修改时间排序。该值已经以长格式存在。该
-u
选项的行为根据它所使用的选项而有所不同。ls -u
它按访问时间排序。-l
选项,它会显示访问时间,但按名称排序。在这种情况下,它充当输出修饰符而不是排序选项。-l
和-t
,它显示访问时间并按其排序。该
-c
选项与 ctime 属性的工作方式相同。复杂性来自于修改长列表格式的需要。其他几个选项
-lo
以这种方式工作:抑制组信息,-lG
抑制所有者信息,-lh
以人类可读的格式显示大小,等等)。ls
手册中的 GNU 样式选项使这更容易理解。-l
是--format=long
。-t
是--sort=time
。-u
是--time=atime
。-lu
也是如此--format=long --time=atime
。也就是说,显示长列表,但使用 atime 而不是默认的 mtime。并且
-ltu
是--format=long --sort=time --time=atime
。在这种情况下,显示 atime 并按它排序。-t
表示按时间排序——某个时间字段。-u
表示使用访问时间而不是修改时间(用于显示和/或排序,如适用)。所以你理解正确;你只是让事情变得比现在更复杂,从而让自己感到困惑。退后一步,深吸一口气,你会发现它并没有那么复杂。
PS 请注意,
-t
没有-l
(或类似选项,like-o
or-g
)将不会显示任何时间字段。你是正确的,
-t
意思是“按时间排序”,-u
意思是“使用 atime 时间戳”(当用 排序-t
或用 显示时间戳时-l
)。POSIX-u
选项并不意味着更改默认排序顺序,除非-t
也用于显式请求按时间戳排序。的 POSIX 规范中
ls
包含以下文本:然而,GNU 人认为 let
ls -u
也按 atime排序ls -u
会很方便,因为否则和的输出之间没有区别ls
(两者都将按名称排序并且不会显示时间戳)。这就是为什么 GNUls
与任何其他系统的ls
.GNU 系统上的文档将
ls
其总结为这篇短文中没有提到的是,任何其他提供与 类似的输出格式的选项
-l
,例如和-o
,也会从选项中移除排序效果。这些选项在 GNU手册中都有文本“like but, ...”。-g
-n
-u
-l
-l
ls
-c
GNU中的ls
选项以类似的方式依赖于其他选项来排序/显示 ctime 时间戳。GNU从 1999 年左右
ls
开始就是这样工作的。无论您使用什么实现
ls
,要按时间戳对长格式输出进行排序,您都必须使用-t
. 用于-l -ut
按 atime-l -ct
排序、按 ctime 排序或仅-l -t
按 mtime 排序。