C'est simplement la syntaxe glob (et ça n'a vraiment rien de nouveau).
J’avais mis « nouveauté » entre guillemets et précisé que j’ai lu certains man en entier il y a « longtemps ». Penses-tu que ça existait déjà sous SunOS en 1992 (j’ai par exemple dû lire le man d’awk en entier à l’époque, peut-être pas depuis ; pour celui de find, je ne sais plus) ?
Je soupçonne que c’est un ajout inspiré des expressions rationnelles et si j’ai raison, je serais curieux de savoir de quand il date.
C'est aussi pourquoi un manuel ne va pas lister les constructions possibles, il suffit de dire que c'est un "glob pattern" (ceci dit, je viens de jeter un coup d'œil sur le man de find et ils parlent de "shell pattern" partout, sous-entendant "glob pattern", sauf à un endroit où ils disent bien "glob pattern") et les gens peuvent se renseigner sur la syntaxe ailleurs.
Ça n’est pas complètement garanti : il y a ça aussi comme syntaxe en bash (voir la section « Développement des chemins » du man, il y a d’autres possibilités intéressantes) :
ls /usr/share/fonts/*/*.@(o|t)tf | wc -l
516
OK, pour cet exemple, ça n’est pas utile par rapport aux crochets, mais ça l’est pour des portions de taille supérieure à un.
Bon, ça ne fonctionne qu’avec l’option extglob (shopt -s extglob pour l’activer).
Mais du côté de find, ça n’a pas l’air supporté :
find /usr/share/fonts -iname '*.(o|t)tf'| wc -l
0
et avec d’autres shells (par exemple dash), on peut aussi se brosser.
Par contre,
find ~ -maxdepth 1 -iname '*bash*'| wc -l
5
mais
ls ~/*bash* 2> /dev/null | wc -l
0
D’après le man de find :
Dans ces motifs, et contrairement à l'expansion des noms de fichiers de l'interpréteur de commandes, un « . » initial peut correspondre au motif « * » [...] (c'est une évolution de findutils-4.2.2 [...]).
Cela dit, si on active l’option dotglob pour bash :
[^] # Re: Motifs...
Posté par Arthur Accroc . En réponse à la dépêche Firefox 63. Évalué à 2.
J’avais mis « nouveauté » entre guillemets et précisé que j’ai lu certains man en entier il y a « longtemps ». Penses-tu que ça existait déjà sous SunOS en 1992 (j’ai par exemple dû lire le man d’awk en entier à l’époque, peut-être pas depuis ; pour celui de find, je ne sais plus) ?
Je soupçonne que c’est un ajout inspiré des expressions rationnelles et si j’ai raison, je serais curieux de savoir de quand il date.
Ça n’est pas complètement garanti : il y a ça aussi comme syntaxe en bash (voir la section « Développement des chemins » du man, il y a d’autres possibilités intéressantes) :
OK, pour cet exemple, ça n’est pas utile par rapport aux crochets, mais ça l’est pour des portions de taille supérieure à un.
Bon, ça ne fonctionne qu’avec l’option extglob (shopt -s extglob pour l’activer).
Mais du côté de find, ça n’a pas l’air supporté :
et avec d’autres shells (par exemple dash), on peut aussi se brosser.
Par contre,
mais
D’après le man de find :
Cela dit, si on active l’option dotglob pour bash :
« Le fascisme c’est la gangrène, à Washington comme en Russie. » — adapté de Renaud, Hexagone