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 sorting (Dolphin Preferences > General > Sorting Mode) Dolphin 17.12.3, которая является версией Kubuntu 18.04 по умолчанию, я получаю другой порядок сортировки, как показано на Name столбец на изображении ниже:

Мой вопрос: как Dolphin достигает такой сортировки?

В " Руководстве по дельфинам" особо нечего сказать:

Режим сортировки контролирует порядок сортировки элементов в представлении. Если включена естественная сортировка, порядок сортировки трех примеров файлов будет

File1,

File2,

File10.

Если эта опция отключена, будет использоваться обычная алфавитная сортировка с учетом регистра или без учета регистра, что приводит к порядку сортировки

File1,

File10,

File2.

2 ответа

Решение

Сортировка для людей: естественный порядок сортировки, обсуждает полезность естественной сортировки, но не рассматривает, как имена файлов с ведущими _ перечислены перед другими файлами.

Ответы на Как мне сделать ls sort подчеркивания символов в первую очередь? обратиться к ведущим _ вопрос.

Решение, использующее расширение оболочки для обхода любой сортировки 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 для обеспечения естественной сортировки.

"Естественная сортировка" обнаруживает числа в именах файлов и использует числовую сортировку в этой части имен файлов, поэтому 010.txt и 10.txt идут после 4.txt (10> 4).

1 <2 <10, поэтому mov001 и mov01A идут перед mov002 и mov010.

0 <1 <10, поэтому _0mov00A <_1mov00A <_010.txt

и т.п.

Другие вопросы по тегам