Kubuntu 18.04:Dolphin 文件管理器如何“自然地”对文件进行排序?

Kubuntu 18.04:Dolphin 文件管理器如何“自然地”对文件进行排序?

我有以下文件:

$ ls
_010.txt  01.txt    10.txt    1.txt  3.txt  mov001  mov00a  _mov00A  mov00B  mov01A
010.txt   _0mov00A  _1mov00A  2.txt  4.txt  mov002  mov00A  mov00aA  mov010
$ 

ls -1单独使用或在各种LANG=选项之前使用,文件顺序如下所示:

ls -1                 |                 
ls -1 LANG=en_GB.utf8 |  ls -1 LANG=C   
ls -1 LANG=en_US.utf8 |  ls -1 LC_ALL=C  
---------------------------------------
       _010.txt       |     01.txt      
       010.txt        |     010.txt     
       01.txt         |     1.txt       
       _0mov00A       |     10.txt      
       10.txt         |     2.txt       
       _1mov00A       |     3.txt       
       1.txt          |     4.txt       
       2.txt          |     _010.txt    
       3.txt          |     _0mov00A    
       4.txt          |     _1mov00A    
       mov001         |     _mov00A     
       mov002         |     mov001      
       mov00a         |     mov002      
       mov00A         |     mov00A      
       _mov00A        |     mov00B      
       mov00aA        |     mov00a      
       mov00B         |     mov00aA     
       mov010         |     mov010      
       mov01A         |     mov01A      

但是当我使用Natural sortingDolphin 17.12.3(Kubuntu 18.04 的默认版本)的选项(Dolphin 首选项 > 常规 > 排序模式)时,我得到了不同的排序顺序,如下Name图所示的列中所示:

海豚的自然分类

我的问题:Dolphin 如何实现这种排序?

海豚手册没有太多要说的:

排序模式控制视图中项目的排序方式。如果启用自然排序,则三个示例文件的排序顺序将是

文件1,

文件2,

文件10。

如果禁用此选项,则将使用正常的字母排序(区分大小写或不区分大小写),从而导致排序顺序

文件1,

文件10,

文件2。

答案1

“自然排序”检测文件名中的数字并对文件名的这一部分使用数字排序,因此 010.txt 和 10.txt 位于 4.txt 之后(10 > 4)。

1 < 2 < 10,因此 mov001 和 mov01A 位于 mov002 和 mov010 之前。

0 < 1 < 10,因此 _0mov00A < _1mov00A < _010.txt

ETC。

答案2

人类排序:自然排序顺序,讨论了自然排序的实用性,但没有涉及如何将以前导文件_名列在其他文件之前。

答案我如何让 ls 首先对下划线字符进行排序?解决主要_问题。

使用的解决方案shell 扩展绕过任何排序方式ls

ls -lf _* [!_]*

因此,对于问题中的文件,

ls -lf -1 _* [!_]*

提供与 Dolphin 自然排序相同的排序结果:

$ ls -lf -1 _* [!_]*
_010.txt
_0mov00A
_1mov00A
_mov00A
010.txt
01.txt
10.txt
1.txt
2.txt
3.txt
4.txt
mov001
mov002
mov00a
mov00A
mov00aA
mov00B
mov010
mov01A
$ 

我不知道这是否与 Dolphin 所采用的自然排序机制完全相同。

相关内容