Globbing & Wildcards
Dateien & Verzeichnisse
Was ist Globbing?
Globbing bezeichnet das Auflösen von Platzhalterzeichen (Wildcards) in Dateinamen durch die Shell. Wenn du ls *.txt tippst, ersetzt die Shell *.txt vor der Ausführung durch die Liste aller passenden Dateien und übergibt diese an ls. Wichtig zu verstehen: Das macht die Shell, nicht der einzelne Befehl. Deshalb funktioniert Globbing mit fast allen Befehlen gleich.
Die wichtigsten Wildcards
| Muster | Bedeutung |
|---|---|
* | Beliebig viele Zeichen (auch keine) |
? | Genau ein beliebiges Zeichen |
[abc] | Eines der Zeichen a, b oder c |
[a-z] | Ein Zeichen aus dem Bereich a bis z |
[!abc] | Ein Zeichen, das NICHT a, b oder c ist |
{a,b} | Klammer-Expansion: a oder b |
* – der Stern
Der Stern steht für beliebig viele Zeichen. Damit greifst du ganze Gruppen von Dateien ab:
$ ls *.txt # alle Dateien, die auf .txt enden $ ls bild* # alles, was mit bild beginnt $ rm * # ALLE Dateien im Verzeichnis – Vorsicht!
? – das Fragezeichen
Das Fragezeichen ersetzt genau ein Zeichen. Praktisch, wenn du die Länge kennst:
$ ls foto?.jpg # foto1.jpg, fotoA.jpg, aber nicht foto10.jpg $ ls log_??.txt # log_01.txt, log_99.txt …
[..] – Zeichenklassen
In eckigen Klammern gibst du eine Auswahl oder einen Bereich an. So findest du z. B. nur bestimmte Dateien:
$ ls datei[123].txt # datei1.txt, datei2.txt, datei3.txt $ ls [a-c]* # alles, was mit a, b oder c beginnt $ ls bild[!0-9]* # bild gefolgt von KEINER Ziffer
{..} – Klammer-Expansion
Die geschweiften Klammern sind eine Sonderform: Sie erzeugen jede Kombination – auch für Dateien, die noch gar nicht existieren. Das ist ideal zum Anlegen oder für Backups:
$ echo bild.{jpg,png,gif}
bild.jpg bild.png bild.gif
$ mkdir projekt/{src,test,docs} # drei Verzeichnisse auf einmal
$ cp brief.txt brief.txt{,.bak} # legt brief.txt.bak als Kopie an
Globbing ist KEIN Regex
Eine häufige Verwechslung: Globbing sieht regulären Ausdrücken (Regex) ähnlich, ist aber etwas völlig anderes. Die Zeichen bedeuten Verschiedenes:
| Zeichen | Im Globbing | In Regex |
|---|---|---|
* | Beliebige Zeichen | „Vorheriges 0+ mal“ |
? | Genau ein Zeichen | „Vorheriges 0 oder 1 mal“ |
. | Wörtlicher Punkt | Beliebiges Zeichen |
Globbing nutzt du auf der Kommandozeile für Dateinamen; Regex begegnet dir in Werkzeugen wie grep oder sed für Textinhalte.
Was passt auf das Muster foto?.jpg?
Sicherheitshinweis
Prüfe Wildcards vor gefährlichen Befehlen, indem du sie zuerst mit echo oder ls testest. echo rm * zeigt dir, was getroffen würde, ohne etwas zu löschen. Als Nächstes geht es um Hard- & Symlinks.