Kubuntu 18.04: Как файловый менеджер дельфина сортирует файлы “естественно”?

У меня есть следующие файлы:

$ 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 опция (Предпочтения дельфина> Общий> Сортировка Режима) дельфина 17.12.3, который является версией по умолчанию Kubuntu 18.04, я получаю другой порядок сортировки как показано в Name столбец в изображении ниже:

Natural Sorting in Dolphin

Мой вопрос: как дельфин достигает этого типа сортировки?

Руководство дельфина не имеет многого для высказывания:

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

File1,

File2,

File10.

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

File1,

File10,

File2.

1
задан 26 May 2018 в 13:24

2 ответа

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

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

Решение с помощью расширения оболочки для обхода любой сортировки по ls имеет:

ls -lf _* [!_]*

Так, для файлов в вопросе,

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

обеспечивает тот же результат вида, как делает естественный вид дельфина:

$ 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
$ 

Я не знаю, является ли это тем же самым механизмом, который дельфин включает для обеспечения естественной сортировки.

1
ответ дан 7 December 2019 в 13:24

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

1 <2 <10, таким образом, mov001 и mov01A прибывают прежде mov002 и mov010.

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

и т.д.

1
ответ дан 7 December 2019 в 13:24

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

Похожие вопросы: