Wildcards

Posté le dim 06 mars 2016 dans linux

Les caractères génériques ou wilcards, permettent d'appliquer une commande à un groupe de fichiers et/ou dossiers dont les noms sont similaires.

Une chaîne de texte est un wildcard pattern si elle contient au moins un de ces caractères ? * [.

Le globbing est l'opération qui développe un wildcard pattern en une liste de mots qui correspondent au pattern.

Ce qui suit est inspiré de la page man 7 glob.

L'astérisque *

Permet de remplacer de zéro à plusieurs caractères.

  • ls img* liste les noms de fichiers débutant par img.
  • ls *img liste les noms de fichiers se terminant par img.
  • ls *img* liste tous les noms de fichiers contenant img.

Le point d’interrogation ?

Représente toujours un seul caractère.

  • ls ? liste les noms comportant un seul caractère.
  • ls img????.jpg liste les noms de fichiers commençant par img suivi de quatre caractères et qui se terminent par .jpg.

On peut évidement mixer * et ?.

  • ls img????* liste les noms de fichiers commençant par img suivi de quatre caractères et se terminant par un nombre quelconque de caractères.

Les crochets [ ]

Les crochets permettent d'indiquer une liste de caractères de remplacement.

La commande ls ?mg* liste les noms de fichiers contenant m et g à la seconde et troisième position.

On peut souhaiter limiter la sélection aux fichiers Img... et img....

  • ls [iI]mg* liste donc les noms commençant par img ou Img.

Si le point d'exclamation ! suit le crochet ouvrant [, l'expression est inversée.

  • ls [!iI]mg* sélectionne tout les fichiers ne commençant par i ou I, dont la seconde et troisième lettre sont m et g.

Notez :

  • Les crochets ne peuvent pas être vide.
  • Le crochet fermant ] peut être présent. Dans ce cas, il doit suivre le crochet ouvrant.
  • [ ][!] permet de faire correspondre les caractères ] [ et !.

Il est également possible d'indiquer une plage de caractères (range) en utilisant le tiret - :

  • [a-f] est équivalent à [abcdef]
  • [a-fA-F0-9] est équivalent à [abcdefABCDEF0123456789]

Si le tiret doit faire partie des caractères de remplacement, il doit être placé en première ou dernière position.

Pathnames

Le globbing s'applique séparément sur chaque élément d'un chemin. Le caractère / ne peut être remplacé par le point d'interrogation, l'astérisque ou une range.