web-dev-qa-db-fra.com

Kubuntu 18.04: Comment le gestionnaire de fichiers Dolphin trie-t-il les fichiers "naturellement"?

J'ai les fichiers suivants:

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

J'ai utilisé ls -1 seul ou précédé de diverses options LANG= et l'ordre des fichiers est indiqué ci-dessous:

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      

Mais lorsque j'utilise l'option Natural sorting (Préférences Dolphin> Général> Mode de tri) de Dolphin 17.12.3, qui est la version par défaut de Kubuntu 18.04, j'obtiens un ordre de tri différent, comme indiqué dans la colonne Name. dans l'image ci-dessous:

Natural Sorting in Dolphin

Ma question: comment Dolphin réalise-t-il ce type de tri?

Le Manuel de Dolphin n'a pas grand chose à dire:

Le mode de tri contrôle la manière dont les éléments sont triés dans la vue. Si le tri naturel est activé, l’ordre de tri de trois exemples de fichiers sera

Fichier1,

Fichier2,

File10.

Si cette option est désactivée, le tri alphabétique normal, sensible à la casse ou insensible à la casse, sera utilisé, ce qui conduit à l'ordre de tri.

Fichier1,

File10,

Fichier2.

1
DK Bose

Tri pour les humains: ordre de tri naturel , discute de l'utilité du tri naturel mais ne traite pas de la façon dont les noms de fichiers avec un _ en tête sont listés avant les autres fichiers.

Les réponses à Comment puis-je trier les caractères de soulignement en premier? adresse le problème _ principal.

Une solution utilisant extension du shell pour éviter tout tri par ls a:

ls -lf _* [!_]*

Donc, pour les fichiers de la question,

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

fournit le même résultat de tri que le tri naturel de 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
$ 

Je ne sais pas si c'est le même mécanisme que Dolphin intègre pour fournir un tri naturel.

1
DK Bose

Le "tri naturel" détecte les numéros dans les noms de fichiers et utilise le tri numérique sur cette partie des noms de fichiers. Par conséquent, 010.txt et 10.txt sont placés après 4.txt (10> 4).

1 <2 <10, donc mov001 et mov01A viennent avant mov002 et mov010.

0 <1 <10, donc _0mov00A <_1mov00A <_010.txt

etc.

1
muclux