Wildcard

Een wildcard is een joker-teken in de shell dat voor meerdere bestandsnamen kan staan. De shell vervangt het patroon door alle passende namen vóórdat het commando start — dit heet globbing.

De patronen

PatroonBetekentVoorbeeld
*Nul of meer tekens*.log — alle log-bestanden
?Precies één tekenfoto?.jpg — foto1.jpg, fotoA.jpg
[abc]Eén teken uit de setrapport[12].pdf
[a-z]Eén teken uit het bereik[0-9]* — begint met een cijfer
{a,b}Elk van de alternatieven*.{jpg,png} (brace expansion, Bash)

De shell doet het werk, niet het commando

ls *.txt betekent dat de shell eerst *.txt uitbreidt naar bijvoorbeeld a.txt b.txt, en dan pas ls a.txt b.txt uitvoert. Daarom moet je quoten als het patroon voor het commando zelf bedoeld is:

find . -name "*.txt"    # quotes: find krijgt het patroon zelf
rm *.bak                # de shell breidt uit vóór rm start

Verborgen bestanden (beginnend met .) worden door * standaard overgeslagen.

Geen regex

Wildcards lijken op reguliere expressies maar zijn eenvoudiger en betekenen iets anders: in een regex betekent * "nul of meer keer het vorige teken", bij globbing "nul of meer willekeurige tekens".

Zie ook

  • shell — waar globbing plaatsvindt
  • regex — krachtiger patronen voor tekst
  • bash — extra opties zoals globstar (**)
  • find — zoeken met eigen patronen
linuxshell