Vaak wil je dat een opdracht op een groep bestanden werkt. "Wildcards" worden gebruikt om een bestandsnaam-uitbreidingspatroon aan te maken: een serie tekens en wildcards wat tot een lijst met bestandsnamen wordt uitgewerkt. Het patroon /etc/* wordt bijvoorbeeld uitgebreid tot een lijst met alle bestanden in /etc [1]* is een wildcard die voor iedere serie tekens kan staan, dus het patroon /etc/* zal worden uitgewerkt tot een lijst met alle bestandsnamen die met /etc/ beginnen.
Deze lijst met bestanden is vooral handig als een set argumenten voor een opdracht. Als voorbeeld, de /etc directory bevat een serie subdirectory's genaamd rc0.d, rc1.d, enz. Om hiervan de inhoud te bekijken, zou je normaal gesproken typen:
ls /etc/rc0.d /etc/rc1.d /etc/rc2.d /etc/rc3.d /etc/rc4.d /etc/rc5.d /etc/rc6.d /etc/rcS.d |
Dit is langdradig. In plaats daarvan kun je de ? wildcard gebruiken:
ls /etc/rc?.d |
/etc/rc?.d wordt uitgewerkt tot een lijst met bestandsnamen die beginnen met rc, gevolgd door elk enkel teken, gevolgd door .d.
Beschikbare wildcards zijn:
Komt overeen met iedere groep bestaande uit 0 of meer tekens.
Komt overeen met exact één teken.
Als je een aantal tekens in blokhaken omsluit, is het resultaat een wildcard welke overeenkomt met die tekens. [abc] komt bijvoorbeeld overeen met zowel a, als b, als c. Als je na de eerste blokhaak een ^ toevoegt, wordt de betekenis omgedraaid; dus [^abc] komt overeen met elk teken dat geen a, b, of c is. Je kunt een bereik opnemen, zoals [a-j], welke overeenkomt met alles tussen een a en een j. De overeenkomst is hoofdlettergevoelig, dus je moet [a-zA-Z] opgeven om alle tekens toe te staan.
Uitbreidingspatronen zijn simpel, zodra je wat concrete voorbeelden hebt gezien:
Hiermee krijg je een lijst met bestandsnamen die eindigen op .txt, aangezien de * met werkelijk alles overeenkomt.
Dit geeft je een lijst met bestandsnamen die eindigen op .h of .c.
Dit geeft je alle bestandsnamen bestaande uit drie letters die met een a beginnen.
Dit geeft je alle bestandsnamen bestaande uit drie letters die niet beginnen met een a.
Dit geeft je iedere bestandsnaam die begint met een a, ongeacht uit hoeveel tekens de bestandsnaam bestaat.
| [1] | In werkelijkheid worden bestanden beginnend met een . niet in de uitwerking van * opgenomen. |