Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 24/01/2017, à 12:22

jdacier

[Résolu] Anomalie dans le tri des fichiers

Bonjour

J’utilise ubuntu1604 version MATE


Dans un dossier j’ai les fichiers suivants, ils sont triés par ordre alphabétique

Tableau_01

1485252098.jpg



J’ai utilisé le script suivant pour pouvoir imprimer

#!/bin/bash
ls --group-directories-first > zyx-listing.txt


Le contenu de zyx-listing.txt est le suivant

tableau_02

10_filig.doc
10_filig.docx
10_filig.jpg
10_filig.odt
10_filig.pdf
matrice_ab.doc
matrice_ab.docx

matrice_abeille.doc
matrice_abeille.docx
matrice_abeille.jpg
matrice_abeille.odt
matrice_abeille.pdf
matrice_ab.jpg
matrice_ab.odt
matrice_ab.pdf

zyx-listing.txt


Le résultat est donc différent du tableau_01


Voici ci dessous 4 tableaux permettant de mieux cerner le problème

tableau_03 (contenu de zyx-listing.txt)

10_filig.doc
10_filig.docx
10_filig.jpg
10_filig.odt
10_filig.pdf
matrice_abeille.doc
matrice_abeille.docx
matrice_abeille.jpg
matrice_abeille.odt
matrice_abeille.pdf
matrice_.doc
matrice_.docx
matrice_.jpg
matrice_.odt
matrice_.pdf

zyx-listing.txt


tableau_04

10_filig.doc
10_filig.docx
10_filig.jpg
10_filig.odt
10_filig.pdf
matrice_abeille.doc
matrice_abeille.docx
matrice_abeille.jpg
matrice_abeille.odt
matrice_abeille.pdf
matrice_a.doc
matrice_a.docx
matrice_a.jpg
matrice_a.odt
matrice_a.pdf

zyx-listing.txt


tableau_05

10_filig.doc
10_filig.docx
10_filig.jpg
10_filig.odt
10_filig.pdf
matrice_ab.doc
matrice_ab.docx

matrice_abeille.doc
matrice_abeille.docx
matrice_abeille.jpg
matrice_abeille.odt
matrice_abeille.pdf
matrice_ab.jpg
matrice_ab.odt
matrice_ab.pdf

zyx-listing.txt


tableau_06

10_filig.doc
10_filig.docx
10_filig.jpg
10_filig.odt
10_filig.pdf
matrice_abc.doc
matrice_abc.docx
matrice_abc.jpg
matrice_abc.odt
matrice_abc.pdf

matrice_abeille.doc
matrice_abeille.docx
matrice_abeille.jpg
matrice_abeille.odt
matrice_abeille.pdf
zyx-listing.txt

Est ce qu'il s'agit d'un problème connu ou pas ???

Dernière modification par jdacier (Le 25/01/2017, à 23:52)

Hors ligne

#2 Le 24/01/2017, à 13:33

helias

Re : [Résolu] Anomalie dans le tri des fichiers

Bonjour Jdacier,

Je ne vois pas trop ou est le problème dans ton script ou ce que tu attends de celui ci...
L'option " --group-directories-first " met en avant les répertoires avant les fichiers ... il ne trie pas dans l'ordre alpha° .

Si tu veux trier tu peux essayer ceci :

ls --group-directories-first | sort -d -f -b  > zyx-listing.txt 

Dis moi ce que ça donne.
Hélias

Hors ligne

#3 Le 24/01/2017, à 15:37

jdacier

Re : [Résolu] Anomalie dans le tri des fichiers

Bonjour

Le résultat est le suivant

ls --group-directories-first | sort -d -f -b  > zyx-listing.txt
=>
10_filig.doc
10_filig.docx
10_filig.jpg
10_filig.odt
10_filig.pdf
matrice_ab.doc
matrice_ab.docx
matrice_abeille.doc
matrice_abeille.docx
matrice_abeille.jpg
matrice_abeille.odt
matrice_abeille.pdf
matrice_ab.jpg
matrice_ab.odt
matrice_ab.pdf

Salut

Dernière modification par jdacier (Le 24/01/2017, à 15:40)

Hors ligne

#4 Le 24/01/2017, à 21:05

helias

Re : [Résolu] Anomalie dans le tri des fichiers

Et ce n'est pas ce que tu voulais ?

Hors ligne

#5 Le 24/01/2017, à 21:19

pingouinux

Re : [Résolu] Anomalie dans le tri des fichiers

Bonsoir,
On dirait que le point est ignoré dans le tri.

Hors ligne

#6 Le 24/01/2017, à 21:22

MicP

Re : [Résolu] Anomalie dans le tri des fichiers

Bonsoir

michel@debg53sw:~/aeff$ (LANG=C ls) > zyx-listing.txt
michel@debg53sw:~/aeff$ cat zyx-listing.txt
10_filig.doc
10_filig.docx
10_filig.jpg
10_filig.odt
10_filig.pdf
matrice_ab.doc
matrice_ab.docx
matrice_ab.jpg
matrice_ab.odt
matrice_ab.pdf
matrice_abeille.doc
matrice_abeille.docx
matrice_abeille.jpg
matrice_abeille.odt
matrice_abeille.pdf
zyx-listing.txt
michel@debg53sw:~/aeff$ 

Dernière modification par MicP (Le 24/01/2017, à 21:31)

Hors ligne

#7 Le 24/01/2017, à 21:37

pingouinux

Re : [Résolu] Anomalie dans le tri des fichiers

En effet, MicP. Voici d'ailleurs un extrait de man sort :

*** WARNING *** The locale specified by the environment affects sort order.  Set  LC_ALL=C  to
       get the traditional sort order that uses native byte values.

Hors ligne

#8 Le 24/01/2017, à 22:01

MicP

Re : [Résolu] Anomalie dans le tri des fichiers

Merci pour l'extrait : un peu fatigué, je me voyais mal essayer d'expliquer l'importance des locales et je n'avais pas pensé à chercher dans la page man de sort

Hors ligne

#9 Le 25/01/2017, à 04:21

MicP

Re : [Résolu] Anomalie dans le tri des fichiers

Comme je n'avais que des fichiers, j'avais oublié d'utiliser l'option --group-directories-first

De plus, comme il n'y avait aucun caractère accentués dans les noms de fichiers, je n'avais pas remarqué un petit défaut :
avec LANG=C, les caractères accentués (et autres non ASCII) ne seront pas affichés et remplacés par des ? car ce sont des caractères ASCII qui sont utilisés,

Donc, une solution serait de ne modifier temporairement que la variable LC_COLLATE :

michel@debg53sw:~/aeff$ (LC_COLLATE=C ls --group-directories-first) > zyx-listing.txt
michel@debg53sw:~/aeff$ cat zyx-listing.txt
un deuxième repertoire pour tester
un repertoire pour tester
un répertoire pour tester
10_filig.doc
10_filig.docx
10_filig.jpg
10_filig.odt
10_filig.pdf
matrice_ab.doc
matrice_ab.docx
matrice_ab.jpg
matrice_ab.odt
matrice_ab.pdf
matrice_abeille.doc
matrice_abeille.docx
matrice_abeille.jpg
matrice_abeille.odt
matrice_abeille.pdf
matricé_abeille.pdf
mµtrice_ab.pdf
màtrice_ab.pdf
mâtrice_ab.pdf
mâtrice_abeille.pdf
mätrice_ab.pdf
mätrice_abeille.pdf
zyx-listing.txt
michel@debg53sw:~/aeff$ 

NOTES : L'option --group-directories-first ne servirait à rien si l'on devait trier (par un "pipe" avec sort) la sortie de ls

Dernière modification par MicP (Le 25/01/2017, à 04:57)

Hors ligne

#10 Le 25/01/2017, à 13:31

jdacier

Re : [Résolu] Anomalie dans le tri des fichiers

Bonjour

Je sais maintenant comment lister correctement mes dossiers, mais je ne comprends pas où est le problème. Je n'utilise jamais de caractères accentués, ni de blanc.

*** WARNING *** The locale specified by the environment affects sort order.  Set  LC_ALL=C  to
       get the traditional sort order that uses native byte values

The locale specified by the environment  => sont elles francophones, linuxiennes, ou est-ce un problème hard  ???

Salut

Hors ligne

#11 Le 25/01/2017, à 13:51

MicP

Re : [Résolu] Anomalie dans le tri des fichiers

…The locale specified by the environment  => sont elles francophones, linuxiennes, ou est-ce un problème hard  ?…

Elles sont  basées sur la norme POSIX et permettent justement les échanges d'informations entre tous les systèmes de toutes les langues de tous les pays.

Quand on installe Linux, on a le choix du langage à utiliser et du pays.
en fonction de ce choix, les variables locales sont définies pour le système.

Ensuite, quand on créé un compte utilisateur, on peut aussi faire en sorte que ce compte utilise un autre langage et/ou un autre fuseau horaire.

En fonction de ces choix, des variables locales sont définies :

michel@debg53sw:~$ locale
LANG=fr_FR.utf8
LANGUAGE=
LC_CTYPE="fr_FR.utf8"
LC_NUMERIC="fr_FR.utf8"
LC_TIME="fr_FR.utf8"
LC_COLLATE="fr_FR.utf8"
LC_MONETARY="fr_FR.utf8"
LC_MESSAGES="fr_FR.utf8"
LC_PAPER="fr_FR.utf8"
LC_NAME="fr_FR.utf8"
LC_ADDRESS="fr_FR.utf8"
LC_TELEPHONE="fr_FR.utf8"
LC_MEASUREMENT="fr_FR.utf8"
LC_IDENTIFICATION="fr_FR.utf8"
LC_ALL=
michel@debg53sw:~$ 

Et chacune de ces variables permettent de formater les informations d'une langue à l'autre.

Une date ne sera pas affichée de la même façon en fonction de la langue et du pays choisi

michel@debg53sw:~$ date
mercredi 25 janvier 2017, 12:54:33 (UTC+0100)
michel@debg53sw:~$ 
michel@debg53sw:~$ (LANG=C date)
Wed Jan 25 12:54:47 CET 2017
michel@debg53sw:~$ 

et c'est la même chose pour la monnaie, le valeurs numériques, les unités de mesure, l'encodage des caractères, fuseau horaire, l'ordre de tri des caractères, etc.

Voir :
https://wiki.debian.org/Locale

man locale

et du coup, tu peux faire aussi :

LANG=C man locale

avec n'importe quelle page man

Mais c'était juste pour la démonstration, car la commande man a déjà une option pour ça.
Par exemple, pour visualiser la page man de la commande man mais dans sa version US ASCII:

man -LC man

=======
NOTE : À propos des parenthèses dans la ligne de commandes :

(LC_COLLATE=C ls --group-directories-first) > zyx-listing.txt

J'avais mis une partie des commandes entre parenthèses, mais ce n'était pas indispensable pour cette ligne de commandes.
C'est simplement une habitude que j'ai prise et qui permet de ne ne modifier les variables locales que pour le shell qui lancera les commandes qui sont dans la parenthèse.

Dernière modification par MicP (Le 26/01/2017, à 03:33)

Hors ligne

#12 Le 25/01/2017, à 23:51

jdacier

Re : [Résolu] Anomalie dans le tri des fichiers

Réponse pour MicP

merci pour tes explications, je ne risquais de trouver

Salut

Hors ligne