Attention, certaines de ces expressions ne fonctionnent pas toutes avec les mêmes shell.
Pour certaines, elles sont compatibles BASH, pour d'autres ZSH et certaines ne fonctionnent qu'avec KSH.
Le caractère "*" permet de remplacer n'importe quel caractère.
$ ls
fichier1 fichier2.a monfichier tOnfichier.b
$ ls *.a
fichier2.a
$ ls f*
fichier1 fichier2.a
Le caractère "?" représente un caractère quelconque.
$ ls *.?
fichier2.a tOnfichier.b
$ ls ????????
fichier1
Les caractères "[ ]" permettent d'indiquer la liste des caractères que l'on recherche à une position bien précise dans le noms des fichiers.
$ ls [ft]*.[a-z]
fichier2.a tOnfichier.b
% ls ?[A-Z0-9e]*
cOucou f1chier F2chier Hello
$ ls [!a-z]*
1coucou Coucou F2chier Fichier Hello
% rm -i *.b *.c
rm : supprimer fichier vide «fichier1.b» ? y
rm : supprimer fichier vide «fichier1.c» ? y
Les expressions complexes sont compatible BASH à condition d'activer l'option extglob avec la commande shopt (shopt -s extglob).
$ ls
1coucou coucou.t fichier159159159.log fichier161.log fichier.log
cOucou coucou.uvw fichier159159.log fichier1.a Hello.txt
Coucou f1chier fichier159160.log fichier1.abc
coucou.r F2chier fichier159.log fichier1.b
coucou.s Fichier fichier160.log fichier1.c
L'expression sera présente 0 ou 1 fois.
Afficher tous les fichiers dont le nom contient 0 ou 1 fois "159"
$ ls fichier?(159).log
fichier159.log fichier.log
L'expression sera présente entre 0 et x fois.
Afficher tous les fichiers dont le nom contient 0 ou x fois "159"
$ ls fichier*(159).log
fichier159159159.log fichier159159.log fichier159.log fichier.log
L'expression sera présente entre 1 et x fois.
Afficher tous les fichiers dont le nom contient 1 ou x fois "159"
$ ls fichier+(159).log
fichier159159159.log fichier159159.log fichier159.log
L'expression sera présente exactement 1 fois.
Afficher tous les fichiers dont le nom contient 1 fois "159"
$ ls fichier@(159).log
fichier159.log
L'expression ne sera pas présente.
Afficher tous les fichiers dont le nom ne contient pas 1 fois "159"
$ ls fichier!(159).log
fichier159159159.log fichier159160.log fichier161.log
fichier159159.log fichier160.log fichier.log
Afficher tous les fichiers dont le nom ne contient pas "fichier"
$ ls !(fichier*)
1coucou Coucou coucou.s coucou.uvw F2chier Hello.txt
cOucou coucou.r coucou.t f1chier Fichier
Une barre verticale dans une expression correspond à "ou bien"
Afficher tous les fichiers dont le nom contient 1 fois "159" ou "160"
$ ls fichier@(159|160).log
fichier159.log fichier160.log
Afficher tous les fichiers dont le nom contient 1 ou x fois "159" ou "161"
$ ls fichier+(159|161).log
fichier159159159.log fichier159159.log fichier159.log fichier161.log
Afficher tous les fichiers dont le nom contient 1 fois ( 1 ou x fois "159" ou "161")
$ ls fichier@(+(159)|+(161)).log
fichier159159159.log fichier159159.log fichier159.log fichier161.log