Wildcards

wildcards-featured

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.

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!

Joel Benseler

Click Here to Leave a Comment Below

Leave a Comment: