Next: Shell-Scripts Up: Bourne-Shell als Kommando- und Previous: Pipelineverarbeitung
Filenamengenerierung
-
Verwendung von Metazeichen zur Bezeichnung einer Gruppe von
Filenamen bei der Angabe von Filenamen-Argumenten(Begriffe: Filenamengenerierung, pattern matching, wild-cards (Joker))
-
Metazeichen und ihre Bedeutung
* repräsentiert jede Zeichenkette einschließlich der leeren Zeichenkette (Zeichenkette mit der Länge 0) ? repräsentiert ein beliebiges Zeichen [ Beginn einer Zeichenklassenangabe ] Abschluß einer Zeichenklassenangabe - Zeigt eine lexikographisch geordnete Zeichenklasse an -
Beispiele:
im aktuellen Verzeichnis befinden sich die Fileskap01.tex kap01.dvi kap02.tex kap02.dvi kap03.tex kap03.dvi kap04.tex kap04.dvi kap05.tex kap05.dvi prog.c prog.o prog1.c sort $ ls * -> alle Files $ ls kap* -> kap01.tex, kap01.dvi, kap02.tex, kap02.dvi, kap03.tex, kap03.dvi, kap04.tex, kap04.dvi, kap05.tex, kap05.dvi $ ls *.c -> prog.c, prog1.c $ ls kap*.tex -> kap01.tex, kap02.tex, kap03.tex, kap04.tex, kap05.tex $ ls kap04.tex* -> kap04.tex $ ls kap04.tex? -> nichts $ ls ????????? -> kap01.tex, kap01.dvi, kap02.tex, kap02.dvi, kap03.tex, kap03.dvi, kap04.tex, kap04.dvi, kap05.tex, kap05.dvi $ ls kap0[123]* -> kap01.tex, kap01.dvi, kap02.tex, kap02.dvi, kap03.tex, kap03.dvi $ ls kap0[1-3]* -> kap01.tex, kap01.dvi, kap02.tex, kap02.dvi, kap03.tex, kap03.dvi $ ls kap0[1-9].dvi -> kap01.dvi, kap02.dvi, kap03.dvi, kap04.dvi, kap05.dvi $ ls kap0[1-12].tex -> kap01.tex, kap02.tex $ ls *.[a-d]* -> kap01.dvi, kap02.dvi, kap03.dvi, kap04.dvi, kap05.dvi, prog.c, prog1.c
-
Bemerkungen:
- trifft natürlich für alle Kommandos zu
- Beispiel: cc *.c
- Problem: Anzahl der Kapitel übersteigt 9, z.B. 12
kap0[6-9].tex kap1[0-2].tex kap06.tex bis kap12.tex - Problem: Metazeichen sind selbst im Filenamen enthalten ,,Flüchten`` der Sonderbedeutung mittels
- Beispiel: Filter, die auf * enden, können durch das Muster ** ,,adressiert`` werden
- Testen der Effekte der Filenamengenerierung durch das Kommando echo:
-
Beispiel:
$ echo rm kap0[1-3].dvi rm kap01.dvi kap02.dvi kap03.dvi