Wildcards
Bei der Verwendung jeglicher Befehle ist es früher oder später einmal nötig, auch mehrere Verzeichnisse in den Parametern aufzulisten. Die Auflistung von solchen Elementen kann jedoch, vor allem bei komplexen Verzeichnis- oder Dateinamen schnell umständlich und extrem zeitaufwändig werden. Zur Lösung dieses Problems gibt es unter Linux bzw. UNIX Betriebssystemen ein mächtiges Werkzeug - sogenannte Wildcards.
In diesem Beitrag lernen Sie Grundlagen zur Funktion, sowie der Anwendung von Wildcards kennen.
Was sind Wildcards überhaupt?
Wildcards sind Platzhalter, die es Ihnen ermöglichen, beliebige Muster, auch Pattern genannt, zu definieren und mit diesen anschließend eine Menge von Dateien bzw. Verzeichnissen zusammenzufassen. Trifft das Muster auf den Namen eines Elements zu, dann wird dieses in eine Liste aufgenommen, welche anschließend an ein aufgerufenes Programm übergeben wird.
Wildcards können auch immer dann verwendet werden, wenn Sie beispielsweise den Namen einer Datei oder eines Verzeichnisses nicht genau kennen.
Interne Funktionsweise
Interessant ist, dass aufgerufene Programme die Wildcards nie als solche übergeben bekommen: Die Wildcards werden stattdessen schon vor der Ausführung des Programms von der Bash verarbeitet und schließlich durch die Liste gefundener Elemente ausgetauscht. Erst dann erfolgt die Ausführung des Programms.
Bei jedem Programm, welches die Eingabe mehrerer Datei- bzw. Verzeichnisnamen unterstützt, können somit auch Wildcards verwendet werden.
Die grundlegenden Wildcards
Unter Linux bzw. UNIX stehen 3 grundlegende Wildcards - der Stern *, das Fragezeichen ?, sowie die eckigen Klammern [] - bereit.
Wildcard | Bedeutung |
---|---|
* | Eine beliebige Zeichenkette von beliebiger Länge |
? | Genau ein beliebiges Zeichen |
[] | Eine Menge / ein Bereich von Zeichen |
Die 3 verschiedenen Wildcards werden nun im Einzelnen auch noch einmal genauer betrachtet.
Der Stern
Der Stern * steht für eine aus einem oder mehreren beliebigen Zeichen bestehende Zeichenkette, sowie auch für die leere Zeichenkette. Aus diesem Grund wird er oft verwendet, wenn Dateien mit einem ähnlichen oder nur teilweise bekannten Namen gesucht werden.
Es folgen einige Beispiele für die Verwendung des Sterns.
Beispiel: Bestimmte Dateiendung
In diesem Beispiel werden alle Dateien mit der Endung ".txt" im aktuellen Verzeichnis gesucht und an den Befehl ls übergeben. Die gefundenen Dateinamen werden somit im Terminal ausgegeben.
Eingabe:
ls *.txt
Ausgabe:
befehl-find.txt
befehl-grep.txt
linux-berechtigungssystem.txt
Beispiel: Dateiname enthält bestimmte Zeichenkette
Hier werden alle Dateien ausgegeben, die die Zeichenkette "linux" in ihrem Namen enthalten.
Verzeichnisinhalt:
befehl-top.txt
benutzer-und-gruppen-unter-linux.txt
befehle-systemkontrolle.txt
linux-runlevel.txt
Eingabe:
ls *linux*
Ausgabe:
benutzer-und-gruppen-unter-linux.txt
linux-runlevel.txt
Das Fragezeichen
Das Fragezeichen repräsentiert genau ein einzelnes beliebiges Zeichen. Es lässt sich somit hervorragend verwenden, wenn eine genaue Anzahl Buchstaben in dem Namen einer Datei-/eines Verzeichnisses maskiert werden sollen. Zu diesem Zweck kann auch eine ganze Folge von Fragezeichen angegeben werden.
Auch hier folgen wieder einige Beispiele.
Beispiel: Dateiname ist genau X Zeichen lang
In diesem Beispiel werden nur solche Dateien ausgegeben, dessen Name genau 4 Zeichen lang ist.
Verzeichnisinhalt:
hedv
hellberg
admina
bibo
Eingabe:
ls ????
Ausgabe:
hedv
bibo
Beispiel: Dateiname ist mindestens X Zeichen lang
Das Fragezeichen kann in Kombination mit dem Stern auch verwendet werden, um eine Mindestlänge vorzugeben. Hier werden nur solche Dateien ausgegeben, dessen Name mindestens 6 Zeichen lang ist.
Verzeichnisinhalt:
glossar
foto
e-business
linux
it-consulting
Eingabe:
ls ??????*
Ausgabe:
glossar
e-business
it-consulting
Die eckigen Klammern
Eckige Klammern werden verwendet, um eine Menge von Zeichen zu definieren. Die eckigen Klammern stehen dann als Platzhalter für genau eines der angegebenen Zeichen.
Bei der Angabe des Alphabets oder von Zahlenbereichen gilt es außerdem zu beachten, dass statt einer Auflistung jedes Zeichens auch einfach ein Bereich "von bis" definiert werden kann:
Wildcard | Bedeutung |
---|---|
[0-9] | Eine der Ziffern im Bereich 0-9 |
[a-z] | Ein Kleinbuchstabe aus dem Bereich des gesamten Alphabets |
[A-Z] | Ein Großbuchstabe aus dem Bereich des gesamten Alphabets |
Im Folgenden werden auch noch einmal einige Beispiele für die Anwendung der eckigen Klammern vorgestellt.
Beispiel: Variationen beachten
Durch die Verwendung von eckigen Klammern können mehrere Variationen eines Dateinamens beachtet werden. Beispielsweise die Groß- und Kleinschreibung.
Verzeichnisinhalt:
Hellberg
hellberg
hedv
Hedv
Eingabe:
ls [hH]ellberg
Ausgabe:
Hellberg
hellberg
Beispiel: Ziffer am Anfang
In diesem Beispiel werden alle Textdateien im aktuellen Verzeichnis, dessen Name mit zwei beliebigen Ziffern anfängt, in das leere Unterverzeichnis "/administration" verschoben.
Verzeichnisinhalt:
01-befehl-top.txt
02-befehl-grep
03-befehl-find.txt
debian-distribution.txt
Eingabe:
mv [0-9][0-9]*.txt
Inhalt des Unterverzeichnisses "/administration":
01-befehl-top.txt
03-befehl-find.txt
Die Verwendung von Sonderzeichen
Sollen Sonderzeichen, wie die Wildcards, als Parameter übergeben, aber nicht von der Shell interpretiert werden, dann müssen diese besonders davor geschützt werden. Bei einzelnen Zeichen wird dazu einfach ein Backslash \ vorangestellt.
Alternativ können einzelne Zeichen, aber auch ganze Zeichenketten, mit Hochkommata ' oder Anführungszeichen " umschlossen werden. Auch hier werden die Zeichen nicht von der Shell interpretiert, sondern direkt an das aufgerufene Programm übergeben.
Zuletzt auch noch einmal ein Beispiel zur Verwendung von Sonderzeichen in Parametern.
Beispiel: Verwendung von Sonderzeichen in Parametern 1
Code:
rm "hellberg?hedv.txt"
Bedeutung:
Genau die Datei mit dem Namen "hellberg?hedv.txt" wird gelöscht. Alle anderen Dateien, wie beispielsweise "hellberg-hedv.txt", bleiben erhalten.
Beispiel: Verwendung von Sonderzeichen in Parametern 2
Code:
rm hellberg\?hedv.txt
Bedeutung:
Auch hier wird wieder genau die Datei mit dem Namen "hellberg?hedv.txt" gelöscht. Das Fragezeichen ist durch ein Backslash 'geschützt' und wird nicht als Wildcard interpretiert.
Abonniere JETZT unseren Newsletter!
Verpasse nie wieder neue Beiträge und exklusive Insider-Only-Inhalte!