Existe-t-il un moyen plus simple d'écrire: wc -l foo?.txt foo??.txt
?
Comme dans mon cas, j'ai (au plus) deux chiffres, j'ai essayé d'utiliser la spécification de plage wc -l foo[1-99].txt
mais elle n'a finalement affiché que les résultats compris entre 1 et 9 (au lieu de 99). Mais il s’agit d’un hack (non fonctionnel), et j’ai vraiment besoin de quelque chose comme wc -l foo[?,??].txt
.
Lorsque vous avez deux choix ou plus, utilisez extension d'accolade:
foo{?,??}.txt
Ou, pour être plus précis:
foo{[0-9],[0-9][0-9]}.txt
Considérons un répertoire avec ces trois fichiers:
$ ls foo*txt
foo111.txt foo11.txt foo1.txt
Observer:
$ echo foo{?,??}.txt
foo1.txt foo11.txt
Et:
$ echo foo{[0-9],[0-9][0-9]}.txt
foo1.txt foo11.txt
Ou, plus concement:
$ echo foo{,[0-9]}[0-9].txt
foo1.txt foo111.txt
Avec la syntaxe extended glob (extglob
) de bash, vous pouvez utiliser foo@(?|??)
par exemple.
wc -l foo@(?|??).txt
L’option extglob
doit être activée par défaut dans le shell interactif des versions actuelles d’Ubuntu. Sinon, vous pouvez l’activer à l’aide de
shopt -s extglob