Das Standard-Globbing-Muster für Dateinamen, das mit einer Ziffer übereinstimmt, lautet [0-9]
. Dies entspricht einer einzelnen Ziffer:
cat file[0-9].txt
So wählen Sie nur zwei davon aus:
cat file[25].txt
Bei größeren Zahlen als 9 ist die Klammererweiterung nützlich (siehe jedoch Hinweis unten für den Unterschied zwischen Globbing-Mustern und Klammererweiterungen):
cat file{25..60}.txt
Auch hier ermöglicht die Klammererweiterung einzelne Zahlen:
cat file{12,45,900,xyz}.txt
(Beachten Sie, dass im obigen Beispiel die Klammererweiterung keine arithmetische Schleife beinhaltet, sondern nur Namen basierend auf den bereitgestellten Zeichenfolgen generiert.)
In bash
, wenn die extglob
Shell-Option aktiviert ist ( shopt -s extglob
), funktioniert auch Folgendes:
cat file@(12|45|490|foo).txt
Das @(...)
Muster |
stimmt mit einem der eingeschlossenen begrenzten Muster überein.
Der Unterschied zwischen Globbing-Mustern als [...]
und @(...)
und Klammererweiterungen besteht darin, dass eine Klammererweiterung in der Befehlszeile generiert wird und möglicherweise nicht mit vorhandenen Namen im aktuellen Verzeichnis übereinstimmt. Ein Dateinamen-Globbing-Muster stimmt mit den Namen überein, aber die Shell beschwert sich nicht, wenn nicht alle möglichen Namen vorhanden sind. Wenn kein übereinstimmender Name vorhanden ist, bleibt das Muster nicht erweitert, es sei denn, auch die nullglob
Shell-Option ist festgelegt. In diesem Fall wird das Muster entfernt.
Beispiel:
touch file1
ls file[0-9]
Hier wird nur die Dateiliste für file1
angezeigt.
Mit ls file{0..9}
, ls
würde die Suche nach bemängelt nicht file0
, file2
usw.
Im folgenden Beispiel berührt der erste Befehl nur vorhandene Namen , die dem angegebenen Muster entsprechen, während in der zweiten Zeile Dateien erstellt werden, die noch nicht vorhanden sind:
touch file[0-9]
touch file{0..9}
file45.txt
. Der Klammerausdruck[...]
funktioniert genauso wie der reguläre Ausdruck, wird jedoch!
anstelle von^
"nicht in" verwendet. Ein[...]
Muster entspricht immer einem einzelnen Zeichen.