#1 Le 21/02/2018, à 11:41
- Compte supprimé
[résolu]Pq echo [a-m]* m'affiche aussi des .....?
Bonjour,
Pourquoi sur mon terminal quand je fais
echo [a-z]*
, il me liste aussi des répertoires/fichiers commençant par une majuscule ?
J'obtiens le même résultat avec
echo [A-Z]*
:
fabien@fabien-Lenovo-G505:~$ echo [a-z]*
Bureau declarationconformitéondulateur2.jpg deja-dup docfactice Documents essai.sh fanny filtreADblock historique Images Modèles monscripkholo.sh monscript10.sh monscript2 monscript2.sh monscript3.sh monscript4.sh monscript5.sh monscript6.sh monscript7.sh monscriptkholobis.sh monscriptkholopbis.sh monscript.sh monscriptwatael.sh monscriptWatel.sh Musique Public redimensionné Téléchargements Vidéos
fabien@fabien-Lenovo-G505:~$ echo [A-Z]*
Bureau declarationconformitéondulateur2.jpg deja-dup docfactice Documents essai.sh fanny filtreADblock historique Images Modèles monscripkholo.sh monscript10.sh monscript2 monscript2.sh monscript3.sh monscript4.sh monscript5.sh monscript6.sh monscript7.sh monscriptkholobis.sh monscriptkholopbis.sh monscript.sh monscriptwatael.sh monscriptWatel.sh Musique Public redimensionné Téléchargements Vidéos
fabien@fabien-Lenovo-G505:~$
Merci, fabien
Dernière modification par Compte supprimé (Le 21/02/2018, à 12:43)
#2 Le 21/02/2018, à 12:14
- pingouinux
Re : [résolu]Pq echo [a-m]* m'affiche aussi des .....?
Bonjour,
C'est parce que l'ordre est celui-ci :
aAbBcC......yYzZ
Ajouté :
Tu peux y remédier ainsi
shopt -s globasciiranges
ou bien
LC_ALL=C
Dernière modification par pingouinux (Le 21/02/2018, à 12:28)
Hors ligne
#3 Le 21/02/2018, à 12:30
- Compte supprimé
Re : [résolu]Pq echo [a-m]* m'affiche aussi des .....?
D'après une formation sur bash que je suis (mooc-fun) la commande devrait faire une distinction entre minuscule et majuscule...
#4 Le 21/02/2018, à 12:41
- Compte supprimé
Re : [résolu]Pq echo [a-m]* m'affiche aussi des .....?
Je viens de regarder à quoi correspond la commande Shopt ... J'active le globasciiranges et magique : ça marche!!
Merci
#5 Le 21/02/2018, à 15:31
- ar barzh paour
Re : [résolu]Pq echo [a-m]* m'affiche aussi des .....?
@pingouinux : non je ne pense pas
[a-z] c'est abcdef .....xyz
ls -a |grep ^[a-z].*$
ne liste pas les fichiers commençant par une majuscule
PC : B760M DS3H DDR4, 12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 20.04, 22.04, 24.04 (en test )
Portable1 : ThinkPad P50 I7-6820HQ, 16G0 Ram Ubuntu 22.04 Ubuntu 24.04 , W10-PRO( en voyage )
Portable2 : T5750 @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )
Hors ligne
#6 Le 21/02/2018, à 16:34
- pingouinux
Re : [résolu]Pq echo [a-m]* m'affiche aussi des .....?
ls -a |grep ^[a-z].*$
ne liste pas les fichiers commençant par une majuscule
Certes, mais ils sont listés par
echo [a-z]*
Hors ligne
#7 Le 21/02/2018, à 17:43
- ar barzh paour
Re : [résolu]Pq echo [a-m]* m'affiche aussi des .....?
@pingouinux
echo [a-z]*
si j'avais eu besoin d'utilisé ce type de commande j'aurai cherché longtemps pourquoi quelquechose n'allait pas !
pour moi ça n'aurait du me donner que les fichiers commençant par une minuscule mais non , ça donne bien les fichiers qui commencent par un lettre minuscule ou une lettre majuscule
n'est pas du à la commande echo elle même ?
en fait la réponse n'est-elle pas : echo n'attend pas une expression régulière !!!!
en plus j'ai confondu avec un expression régulière !!!
et je constate que mon bouquin de programmation shell comporte une erreur concernant la recherche de fichiers avec [...]
il me dit
lister les fichiers ne commençant pas pas une minuscule
ls [!a-z]*
mais en fait
c'est lister les fichiers ne commençant pas par une lettre
par exemple
ls [!a-z]*
210.txt
ls
210.txt color ex1 ex1 (copie) filtre IFOF.tar.gz zenit1
il faut que je recherche comment sont décrits les intervalles dans la doc officielle [a-z] , [A-Z]
Dernière modification par ar barzh paour (Le 21/02/2018, à 18:03)
PC : B760M DS3H DDR4, 12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 20.04, 22.04, 24.04 (en test )
Portable1 : ThinkPad P50 I7-6820HQ, 16G0 Ram Ubuntu 22.04 Ubuntu 24.04 , W10-PRO( en voyage )
Portable2 : T5750 @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )
Hors ligne
#8 Le 21/02/2018, à 18:01
- pingouinux
Re : [résolu]Pq echo [a-m]* m'affiche aussi des .....?
Sur une ligne de commande, c'est le "Pathname Expansion" qui entre en jeu, et non une "regex" (en français dans le texte).
Hors ligne
#9 Le 21/02/2018, à 18:04
- ar barzh paour
Re : [résolu]Pq echo [a-m]* m'affiche aussi des .....?
merci pour la précision , je recherche
bon j'ai trouvé au moins ça
http://wiki.bash-hackers.org/syntax/expansion/globs
Lorsque l'option shell globasciiranges est définie, les globs de plage de parenthèses (par exemple [A-Z]) utilisent l'ordre des paramètres régionaux C plutôt que l'ordre des paramètres régionaux configurés (par exemple ABC ... abc ... au lieu de AaBbCc ...) - depuis 4.3-alpha
[X-Z] Une expression de plage: Correspondant à tous les caractères de X à Y (vos paramètres régionaux actuels, définit la façon dont les caractères sont triés!)
Dernière modification par ar barzh paour (Le 21/02/2018, à 18:29)
PC : B760M DS3H DDR4, 12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 20.04, 22.04, 24.04 (en test )
Portable1 : ThinkPad P50 I7-6820HQ, 16G0 Ram Ubuntu 22.04 Ubuntu 24.04 , W10-PRO( en voyage )
Portable2 : T5750 @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )
Hors ligne
#10 Le 21/02/2018, à 18:30
- Compte anonymisé
Re : [résolu]Pq echo [a-m]* m'affiche aussi des .....?
merci pour la précision , je recherche
Si tu veux aller plus vite,
c'est le paragraphe "Développement des noms de fichiers" de bash
et pour le motif grep (qui n'a aucun lien a part la similitude de la syntaxe), c'est le paragraphe "Expression régulière" de grep
#11 Le 21/02/2018, à 18:36
- ar barzh paour
Re : [résolu]Pq echo [a-m]* m'affiche aussi des .....?
alors attention !!!!! encore une fois !!!!!!!
jpb@jpb-desktop:~/tmp$ ls
210.txt Al.txt a.txt Bal.txt b.txt ref
jpb@jpb-desktop:~/tmp$ rm [a-z]*
il ne reste plus grand chose !!!!
jpb@jpb-desktop:~/tmp$ ls
210.txt
jpb@jpb-desktop:~/tmp$
pour résoudre : utiliser shopt -s globasciiranges (post#2 pingouinux)
jpb@jpb-desktop:~/tmp$ ls
210.txt assurance.txt Assurance.txt CPAM.txt maladie.txt
jpb@jpb-desktop:~/tmp$ shopt -s globasciiranges
jpb@jpb-desktop:~/tmp$ echo [a-z]*
assurance.txt maladie.txt
jpb@jpb-desktop:~/tmp$ rm [a-z]*
jpb@jpb-desktop:~/tmp$ ls
210.txt Assurance.txt CPAM.txt
jpb@jpb-desktop:~/tmp$
sont bien conservés mes fichiers autre que commençant par minuscule
Dernière modification par ar barzh paour (Le 21/02/2018, à 18:44)
PC : B760M DS3H DDR4, 12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 20.04, 22.04, 24.04 (en test )
Portable1 : ThinkPad P50 I7-6820HQ, 16G0 Ram Ubuntu 22.04 Ubuntu 24.04 , W10-PRO( en voyage )
Portable2 : T5750 @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )
Hors ligne
#12 Le 22/02/2018, à 01:05
- metalux
Re : [résolu]Pq echo [a-m]* m'affiche aussi des .....?
Sur une ligne de commande, c'est le "Pathname Expansion" qui entre en jeu, et non une "regex" (en français dans le texte).
Bonjour pingouinux,
Je n'ai pas compris ce que tu voulais dire par cette réponse
Sinon encore le plus simple pour revenir au sujet, c'est de substituer par [:lower:] ou bien [:upper:] en fonction du résultat souhaité:
echo [[:lower:]]*
Hors ligne
#13 Le 22/02/2018, à 01:51
- Watael
Re : [résolu]Pq echo [a-m]* m'affiche aussi des .....?
les globs (Développement de chemins, aka Pathname expansion) ne sont pas des regex.
[a-z]*
en globbing, signifie : commence par une lettre
en regex, ça signifie : une ou aucune lettre.
Connected \o/
Welcome to sHell. · eval is evil.
En ligne
#14 Le 22/02/2018, à 08:24
- Compte supprimé
Re : [résolu]Pq echo [a-m]* m'affiche aussi des .....?
Sinon encore le plus simple pour revenir au sujet, c'est de substituer par [:lower:] ou bien [:upper:] en fonction du résultat souhaité:
echo [[:lower:]]*
Bonjour ,
Plus simple , je ne suis pas convaincu ...
D'ailleurs comment écris tu avec un [:lower:] l'équivalent d'un echo [a-i]* ?
#15 Le 22/02/2018, à 11:24
- metalux
Re : [résolu]Pq echo [a-m]* m'affiche aussi des .....?
@Watael
Merci pour les précisions, je n'avais pas fait attention à cette distinction entre pathname expansion et regex. La syntaxe étant la même, ça porte à confusion.
en regex, ça signifie : une ou aucune lettre.
Ne serait-ce pas plutôt "une ou aucune lettre minuscule"?
grep ^[a-z] <(ls)
me retourne bien que les fichiers/dossiers commençant par une minuscule.
@pseudofab
Je répondais à ta question précise et même si c'est plus facile, c'est certainement moins souple car ça fait appel à tout un ensemble de caractères tels que:
-toutes les minuscules
-tous les chiffres
-etc....
Tu trouveras les classes de caractères POSIX dans cette page.
Hors ligne
#16 Le 22/02/2018, à 16:13
- ar barzh paour
Re : [résolu]Pq echo [a-m]* m'affiche aussi des .....?
@ metalux
tu m'imites : comme moi tu confonds regex et globbing (post#13)
dans grep ^[ a-z] tu ulilises une regex
dans ls [a-z]* on utilise "globbing"
PC : B760M DS3H DDR4, 12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 20.04, 22.04, 24.04 (en test )
Portable1 : ThinkPad P50 I7-6820HQ, 16G0 Ram Ubuntu 22.04 Ubuntu 24.04 , W10-PRO( en voyage )
Portable2 : T5750 @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )
Hors ligne
#17 Le 22/02/2018, à 16:49
- Compte anonymisé
Re : [résolu]Pq echo [a-m]* m'affiche aussi des .....?
@ar barzh paour
tu as lu les 2 paragraphes de manuel que je t'avais indiqué ?
#18 Le 24/02/2018, à 13:56
- ar barzh paour
Re : [résolu]Pq echo [a-m]* m'affiche aussi des .....?
@ Anomyme68
non ça me dépasse un peu (beaucoup) !
dans post#16 j'ai peut-être dit des conn...?
Dernière modification par ar barzh paour (Le 24/02/2018, à 13:58)
PC : B760M DS3H DDR4, 12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 20.04, 22.04, 24.04 (en test )
Portable1 : ThinkPad P50 I7-6820HQ, 16G0 Ram Ubuntu 22.04 Ubuntu 24.04 , W10-PRO( en voyage )
Portable2 : T5750 @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )
Hors ligne
#19 Le 24/02/2018, à 16:33
- Compte anonymisé
Re : [résolu]Pq echo [a-m]* m'affiche aussi des .....?
non tu as pas dis de connerie, dans ce cas c'est juste. Mais si tu veux aller plus loin et comprendre le fonctionnement c'est bien d'avoir la théorie.
Pour le cas du pathname expansion.
Quand tu tapes :
echo *
tu vois ce que ça fait ? L'étoile sera remplacée par la liste des fichiers avant d'être envoyer à "echo"
Et ben c'est le même mécanisme que la commande "ls [a-z]*", sauf que c'est pas la liste complète des fichiers mais seulement ceux qui commencent par une lettre (autre que le Z majuscule).
Pour le regex ça a rien à voir avec Bash, c'est avec le manuel de la commande en question qu'il faut regarder.
Et si tu regardes le manuel de grep, tu vois que la commande que tu as mis en #5 est un peu bizarre, on a pas besoin de spécifier qu'on veut tous les caractères et une fin, c'est implicite. On peut la simplifier par :
ls -a |grep ^[a-z]
ça t'évitera les confusions, et si la commande vient d'un livre, je te conseil de brûler ton livre
#20 Le 25/02/2018, à 06:48
- ar barzh paour
Re : [résolu]Pq echo [a-m]* m'affiche aussi des .....?
@Anonyme68 et @pingouinux
ça y est j'ai imprimé le post #2 de pingouinux
( qui dit que pour [a-z] ) l'ordre est
aAbBcC......yYz
jpb@jpb-desktop:~/exo$ ls
210.txt cmd color ex1 ex1 (copie) filtre IFOF.tar.gz Za.txt zenit1
jpb@jpb-desktop:~/exo$ ls [a-z]*
cmd color ex1 ex1 (copie) filtre IFOF.tar.gz zenit1
jpb@jpb-desktop:~/exo$ ls [a-Z]*
cmd color ex1 ex1 (copie) filtre IFOF.tar.gz Za.txt zenit1
jpb@jpb-desktop:~/exo$ ls [a-i]*
cmd color ex1 ex1 (copie) filtre
jpb@jpb-desktop:~/exo$ ls [a-I]*
cmd color ex1 ex1 (copie) filtre IFOF.tar.gz
jpb@jpb-desktop:~/exo$
ls => liste tous les fichiers
ls [a-i]* => liste tous les fichiers commençant par une lettre aAbBcC...hHi
ls [a-I]* => liste tous les fichiers commençant par une lettre aAbBcC...hHiI
ls [a-z]* => liste tous les fichiers commençant par une lettre aAbBcC...yYz
ls [a-Z]* => liste tous les fichiers commençant par une lettre aAbBcC...yYzZ
.... mais si on a passé la commande
shopt -s globasciiranges
ls [a-i]* => liste tous les fichiers commençant par une lettre abc...hi
ls [a-z]* => liste tous les fichiers commençant par une lettre abcdef.....xyz
il faut rester dans les intervalles [minuscule-minuscule] ou [majuscule-majuscule]]
jpb@jpb-desktop:~/exo$ ls [a-I]*
ls: impossible d'accéder à '[a-I]*': Aucun fichier ou dossier de ce type
jpb@jpb-desktop:~/exo$ ls [A-I]*
IFOF.tar.gz
comme dirait mon amie canadiennne c'est un peu piégeux !!!!
Dernière modification par ar barzh paour (Le 25/02/2018, à 06:56)
PC : B760M DS3H DDR4, 12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 20.04, 22.04, 24.04 (en test )
Portable1 : ThinkPad P50 I7-6820HQ, 16G0 Ram Ubuntu 22.04 Ubuntu 24.04 , W10-PRO( en voyage )
Portable2 : T5750 @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )
Hors ligne