Bonjour,
les nombres écrits en chiffres romains posent un problème dés lors qu'on souhaite les trier puisque ceux-ci utilisent des lettres mais ne suivent pas l'ordre alphabétique.
Pour parer à ce problème, j'ai donc eu l'idée d'utiliser non pas des "I", des "V" et des "X" de la plage ASCII, mais les points de code de U+2160 à U+2169 (ROMAN NUMERAL x) de manière à avoir un unique point de code pour figurer un nombre (je n'ai pas besoin de grands nombres).
J'ai ensuite procédé à quelques tests en créant des fichiers nommés (en UTF-8) avec ces fameux points de code.
Test 1:
Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 #!/usr/bin/env bash mkdir 'Livre Lambda' cd 'Livre Lambda' touch 'Tome Ⅰ' touch 'Tome Ⅱ' touch 'Tome Ⅲ' touch 'Tome Ⅳ' touch 'Tome Ⅴ' touch 'Tome Ⅵ' touch 'Tome Ⅶ'
Si je fais: find . -type f -printf "%f\n" | LC_COLLATE=C sort, j'obtiens bien l'ordre attendu:Ce qui n'est pas étonnant vu que dans ce cas les noms de fichiers sont comparés "bêtement" octet par octet.
Code txt : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Tome Ⅰ Tome Ⅱ Tome Ⅲ Tome Ⅳ Tome Ⅴ Tome Ⅵ Tome Ⅶ
J'obtiens le même résultat avec LC_COLLATE=fr_FR.UTF-8. Donc jusque là, pas de problème.
Test 2:
Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 #!/usr/bin/env bash mkdir 'À la recherche du temps perdu' cd 'À la recherche du temps perdu' touch 'Tome Ⅰ : Du côté de chez Swann' touch 'Tome Ⅱ : À lombre des jeunes filles en fleurs' touch 'Tome Ⅲ : Le Côté de Guermantes' touch 'Tome Ⅳ : Sodome et Gomorrhe Ⅰ et Ⅱ' touch 'Tome Ⅴ : La Prisonnière' touch 'Tome Ⅵ : Albertine disparue' touch 'Tome Ⅶ : Le Temps retrouvé'
Si je fais: find . -type f -printf "%f\n" | LC_COLLATE=C sort, j'obtiens toujours l'ordre attendu.
Par contre si je change la collation en LC_COLLATE=fr_FR.UTF-8 alors là rien ne va plus car le Tome Ⅴ est propulsé en fin de liste:
Code txt : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Tome Ⅰ : Du côté de chez Swann Tome Ⅱ : À lombre des jeunes filles en fleurs Tome Ⅲ : Le Côté de Guermantes Tome Ⅳ : Sodome et Gomorrhe Ⅰ et Ⅱ Tome Ⅵ : Albertine disparue Tome Ⅶ : Le Temps retrouvé Tome Ⅴ : La Prisonnière
Pour quelle raison?
Partager