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:
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.
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.
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.