Caractères génériques sous Linux


Caractères génériques et globbing sous Linux : l’art de viser large

Dans l’univers impitoyable du terminal Linux, taper des noms de fichiers entiers, c’est un peu comme écrire une lettre manuscrite à l’ère des e-mails. Heureusement, il existe le globbing : un mécanisme qui permet d’utiliser des caractères génériques pour filtrer, sélectionner, et manipuler des fichiers plus efficacement que jamais.

Les trois stars du globbing

  • * : correspond à zéro ou plusieurs caractères. C’est le glouton du terminal.
  • ? : correspond à un seul caractère. Ni plus, ni moins. Il aime la précision.
  • [] : permet de spécifier un ensemble ou une plage de caractères. C’est le sniper de la sélection.

Exemples avec ls

# Tous les fichiers
ls *

# Tous les fichiers .txt
ls *.txt

# Tous les fichiers dont le nom commence par "log"
ls log*

# Tous les fichiers ayant un nom de 5 caractères
ls ?????

# Fichiers qui commencent par une lettre entre a et c
ls [a-c]*

# Tous les fichiers sauf ceux contenant un chiffre
ls [!0-9]*
  

Exemples avec rm (supprimer)

# Supprimer tous les fichiers .bak
rm *.bak

# Supprimer les fichiers commençant par "temp"
rm temp*

# Supprimer les fichiers dont le nom est une lettre
rm ?.txt
  

Exemples avec cp (copier) et mv (déplacer)

# Copier tous les fichiers .jpg dans un dossier
cp *.jpg /home/user/images/

# Déplacer les fichiers avec 6 lettres exactes
mv ?????? /home/user/archive/

# Copier les fichiers de 2023
cp *2023* sauvegarde/
  

Autres exemples utiles

# Afficher les fichiers qui se terminent par .sh ou .py
ls *.{sh,py}

# Supprimer tous les fichiers sauf les fichiers .conf
rm !( *.conf )   # Nécessite extglob (shopt -s extglob)

# Copier tous les fichiers sauf ceux commençant par "test"
cp !(test*) backup/   # Nécessite extglob aussi
  

Attention aux pièges

  • Le shell interprète les globbing patterns, pas les commandes. Si vous mettez des guillemets autour, le shell n’expanse pas : ls "*.txt" cherche littéralement un fichier nommé *.txt.
  • Pour activer des patterns plus évolués comme !(...), vous devez activer extglob : shopt -s extglob

Conclusion

Le globbing sous Linux, c’est comme du tri sélectif à grande vitesse. Bien utilisé, il vous fera gagner des heures. Mal utilisé, il peut raser un répertoire complet plus vite qu’un script mal écrit. Soyez précis, soyez prudents, mais surtout : apprenez à l’aimer.

Et rappelez-vous : le terminal ne fait pas de cadeaux, mais il adore l’efficacité.