在我的 Xubuntu 安装中,在某些文件夹中,如果我使用 列出所有文件ls -U
,有时它们不会按字母顺序列出。例如,有一次我让它按字母顺序列出每个文件,但有一个文件排在所有其他文件之前(它以字母开头g
,排在a
's 之前。所有其他g
's 都在我期望它们所在的位置)。
如何ls -U
决定列出文件的顺序?
答案1
按照 man ls:
-U 不排序;按目录顺序列出条目
否则默认行为是
如果未指定 -cftu‐vSUX 或 --sort,则按字母顺序对条目进行排序
目录顺序是指文件在文件系统内部的存储顺序。不同的文件系统使用不同的标准,因此顺序取决于文件系统本身。
答案2
根据man ls
,该-U
选项强制 ls 使用目录顺序列出文件。
答案3
答案说-U
“不排序;按目录顺序列出条目”是正确的,但短语“目录顺序”或更具描述性的“文件内部存储的顺序”在某些情况下会产生误导。
一些文件系统(虚拟或保险丝) 不存储任何内容,它们按需检索数据。ls -U
在这样的文件系统中,您获得的顺序可能是随机的。
想象一个文件系统将来自多个远程服务器的文件聚合到一个本地目录中。假设名称冲突不是问题。为了尽快列出文件,文件系统会异步查询服务器,无论哪个服务器先提供其列表,都会首先列出。网络和服务器上的条件肯定会影响响应到达本地计算机的速度和顺序,因此它们会影响文件的顺序。可以构建这样的文件系统。其中没有内部存储,也没有严格的顺序;因此,您观察到的所有文件在内部存储时肯定没有顺序。
ls -U
使用文件系统的顺序返回。如果文件系统在内部存储文件,那么它很可能会返回一个反映内部顺序的数组(无论这对该特定文件系统意味着什么);但也可能不会。一般来说,顺序可能取决于任何事情。