为什么文件按字母顺序列出,而忽略终端中的文件名长度?

为什么文件按字母顺序列出,而忽略终端中的文件名长度?

为什么文件按字母顺序列出,而忽略终端中的文件名长度?

也许我不应该说“忽略”文件名长度,而是为什么在终端和 GUI 中显示文件有差异。

这当然是一个微不足道的问题,但我对此有点好奇有一段时间了。

在终端中,ls使用-l选项(未指定其他排序选项)的普通命令会按字母顺序列出文件,从列表的顶行开始向下移动。假设我有一个充满使用以下内容创建的文件的目录:

$ touch file1{1..16}

ls在同一目录中将显示以下内容:

-rw-r--r--. 1 user user  0 May 24 11:14 file1
-rw-r--r--. 1 user user  0 May 24 11:14 file10
-rw-r--r--. 1 user user  0 May 24 11:14 file11
-rw-r--r--. 1 user user  0 May 24 11:14 file12
-rw-r--r--. 1 user user  0 May 24 11:14 file13
-rw-r--r--. 1 user user  0 May 24 11:14 file14
-rw-r--r--. 1 user user  0 May 24 11:14 file15
-rw-r--r--. 1 user user  0 May 24 11:14 file16
-rw-r--r--. 1 user user  0 May 24 11:14 file2
-rw-r--r--. 1 user user  0 May 24 11:14 file3
-rw-r--r--. 1 user user  0 May 24 11:14 file4
-rw-r--r--. 1 user user  0 May 24 11:14 file5
-rw-r--r--. 1 user user  0 May 24 11:14 file6
-rw-r--r--. 1 user user  0 May 24 11:14 file7
-rw-r--r--. 1 user user  0 May 24 11:14 file8
-rw-r--r--. 1 user user  0 May 24 11:14 file9

我的问题是为什么“file10”在终端中以这种方式跟随“file1”?在 GUI 环境中查看按名称或类型排序的详细信息或列表视图中的文件时,这些相同的文件会列为“file1”、“file2”、“file3”等。

GUI 中的文件列表似乎按文件名长度按字母顺序排列优先级,从最小长度到最大长度列出文件。它是否正确?这有更多技术原因吗?该ls命令是否“不遗余力”地按照它的方式对文件进行排序,或者使用 GUI 进行同样的操作?

答案1

默认顺序ls是按字母顺序排列。在这种情况下,数字不再是数字,而是字符。 sofile1是一个比 更短的名称file10,但其他方面相同,因此在列表中位于它之前。

如果您想要自然版本顺序,您可以尝试ls -l --sort=version(或ls -lv

-rw-r--r--+ 1 roaima 0 May 24 18:50 file0
-rw-r--r--+ 1 roaima 0 May 24 18:50 file1
-rw-r--r--+ 1 roaima 0 May 24 18:50 file2
...
-rw-r--r--+ 1 roaima 0 May 24 18:50 file9
-rw-r--r--+ 1 roaima 0 May 24 18:50 file10
-rw-r--r--+ 1 roaima 0 May 24 18:50 file11
-rw-r--r--+ 1 roaima 0 May 24 18:50 file12
-rw-r--r--+ 1 roaima 0 May 24 18:50 file13

还有许多其他排序选项可用lsman ls详情请参阅。

相关内容