Le modèle de globalisation de nom de fichier standard pour correspondre à un chiffre est [0-9]
. Cela correspond à un seul chiffre:
cat file[0-9].txt
Pour n'en sélectionner que deux:
cat file[25].txt
Pour des nombres supérieurs à 9, l'expansion de l'accolade sera utile (mais voir la note ci-dessous pour la différence entre les modèles de globulation et les extensions de l'accolade):
cat file{25..60}.txt
Encore une fois, l'expansion des accolades permet également les numéros individuels:
cat file{12,45,900,xyz}.txt
(notez que dans l'exemple ci-dessus, l'expansion d'accolade n'implique pas de boucle arithmétique, mais génère simplement des noms en fonction des chaînes fournies).
Dans bash
, avec l' extglob
option shell activée ( shopt -s extglob
), les éléments suivants fonctionneront également:
cat file@(12|45|490|foo).txt
Le @(...)
modèle correspondra à n'importe |
lequel des modèles délimités inclus .
La différence entre les modèles globbing as [...]
et @(...)
et les extensions d'accolade est qu'une expansion d'accolade est générée sur la ligne de commande et peut ne pas correspondre à des noms existants dans le répertoire en cours. Un modèle de globbing de nom de fichier correspondra aux noms, mais le shell ne se plaindra pas si tous les noms possibles n'existent pas. Si aucun nom correspondant n'existe, le modèle restera non développé, sauf si l' nullglob
option shell est également définie, auquel cas le modèle est supprimé.
Exemple:
touch file1
ls file[0-9]
Ici, seule la liste des fichiers pour file1
sera affichée.
Avec ls file{0..9}
, ls
se plaindrait de ne pas trouver file0
, file2
etc.
Dans l'exemple suivant, la première commande ne touchera que les noms existants qui correspondent au modèle donné, tandis que la deuxième ligne créera des fichiers qui n'existent pas déjà:
touch file[0-9]
touch file{0..9}
file45.txt
. L'expression entre crochets[...]
fonctionne exactement comme dans l'expression régulière mais utilise!
à la place de^
pour dire "pas dans". Un[...]
motif correspondra toujours à un seul caractère.