Platzhalter (auch als Metazeichen bezeichnet) sind Symbole oder Sonderzeichen, die andere Zeichen darstellen. Sie können sie mit jedem Befehl wie dem ls-Befehl oder dem rm-Befehl verwenden Dateien aufzulisten oder zu entfernen, die einem bestimmten Kriterium entsprechen, empfänglich.
Lesen Sie auch:10 nützliche praktische Beispiele zum Verketten von Operatoren in Linux
Diese Platzhalter werden von der Shell interpretiert und die Ergebnisse an den von Ihnen ausgeführten Befehl zurückgegeben. Es gibt drei Hauptplatzhalter in Linux:
- Ein Sternchen
(*)
– stimmt mit einem oder mehreren Vorkommen eines beliebigen Zeichens überein, einschließlich keinem Zeichen. - Fragezeichen
(?)
– stellt ein einzelnes Vorkommen eines beliebigen Zeichens dar oder stimmt mit ihm überein. - Zeichen in Klammern
([ ])
– stimmt mit jedem Vorkommen von Zeichen überein, die in eckige Klammern eingeschlossen sind. Es können verschiedene Arten von Zeichen (alphanumerische Zeichen) verwendet werden:Zahlen, Buchstaben, andere Sonderzeichen usw.
Sie müssen sorgfältig auswählen, welcher Platzhalter verwendet werden soll, um die richtigen Dateinamen abzugleichen:Es ist auch möglich, alle in einem Vorgang zu kombinieren, wie in den folgenden Beispielen erläutert.
Abgleich von Dateinamen mit Platzhaltern in Linux
Für die Zwecke dieses Artikels werden wir die folgenden Dateien verwenden, um jedes Beispiel zu demonstrieren.
createbackup.sh list.sh lspace.sh speaker.sh listopen.sh lost.sh rename-files.sh topprocs.sh
1. Dieser Befehl gleicht alle Dateien ab, deren Namen mit l
beginnen (das ist das Präfix) und mit einem oder mehreren Vorkommen eines beliebigen Zeichens endet.
$ ls -l l*
2. Dieses Beispiel zeigt eine andere Verwendung von *
um alle Dateinamen mit dem Präfix users-0
zu kopieren und endet mit einem oder mehreren Vorkommen eines beliebigen Zeichens.
$ mkdir -p users-info $ ls users-0* $ mv -v users-0* users-info/ # Option -v flag enables verbose output
3. Der folgende Befehl gleicht alle Dateien ab, deren Namen mit l
beginnen gefolgt von einem beliebigen einzelnen Zeichen und endet mit st.sh
(das ist das Suffix).
$ ls l?st.sh
4. Der folgende Befehl gleicht alle Dateien ab, deren Namen mit l
beginnen gefolgt von einem der Zeichen in der eckigen Klammer, aber endend mit st.sh
.
$ ls l[abdcio]st.sh
Wie man Wildcards kombiniert, um Dateinamen in Linux abzugleichen
Sie können Platzhalter kombinieren, um ein komplexes Dateinamen-Übereinstimmungskriterium zu erstellen, wie in den folgenden Beispielen beschrieben.
5. Dieser Befehl gleicht alle Dateinamen ab, denen zwei beliebige Zeichen vorangestellt sind, gefolgt von st
aber endet mit einem oder mehreren Vorkommen eines beliebigen Zeichens.
$ ls $ ls ??st*
6. Dieses Beispiel vergleicht Dateinamen, die mit einem dieser Zeichen beginnen:[clst]
und endet mit einem oder mehreren Vorkommen eines beliebigen Zeichens.
$ ls $ ls [clst]*
7. In diesem Beispiel nur Dateinamen, die mit einem dieser Zeichen beginnen [clst]
gefolgt von einem dieser [io]
und dann ein beliebiges einzelnes Zeichen, gefolgt von einem t
und schließlich werden ein oder mehrere Vorkommen eines beliebigen Zeichens aufgelistet.
$ ls $ ls [clst][io]?t*
8. Hier werden Dateinamen mit einem oder mehreren Zeichen vorangestellt, gefolgt von den Buchstaben tar
und die mit einem oder mehreren Zeichen enden, werden entfernt.
$ ls $ rm *tar* $ ls
So passen Sie unter Linux festgelegte Zeichen an
9. Schauen wir uns nun an, wie man eine Zeichenkette angibt. Betrachten Sie die folgenden Dateinamen, die Systembenutzerinformationen enthalten.
$ ls users-111.list users-1AA.list users-22A.list users-2aB.txt users-2ba.txt users-111.txt users-1AA.txt users-22A.txt users-2AB.txt users-2bA.txt users-11A.txt users-1AB.list users-2aA.txt users-2ba.list users-12A.txt users-1AB.txt users-2AB.list users-2bA.list
Dieser Befehl gleicht alle Dateien ab, deren Name mit users-i
beginnt , gefolgt von einer Zahl, einem Kleinbuchstaben oder einer Zahl, dann einer Zahl und endet mit einem oder mehreren Vorkommen eines beliebigen Zeichens.
$ ls users-[0-9][a-z0-9][0-9]*
Der nächste Befehl gleicht Dateinamen ab, die mit users-i
beginnen , gefolgt von einer Zahl, einem Klein- oder Großbuchstaben oder einer Zahl, dann einer Zahl und endet mit einem oder mehreren Vorkommen eines beliebigen Zeichens.
$ ls users-[0-9][a-zA-Z0-9][0-9]*
Dieser folgende Befehl gleicht alle Dateinamen ab, die mit users-i
beginnen , gefolgt von einer Zahl, einem Klein- oder Großbuchstaben oder einer Zahl, dann einem Klein- oder Großbuchstaben und endet mit einem oder mehreren Vorkommen eines beliebigen Zeichens.
$ ls users-[0-9][a-zA-Z0-9][a-zA-Z]*
Wie man einen Zeichensatz unter Linux negiert
10. Sie können auch eine Reihe von Zeichen mit !
negieren Symbol. Der folgende Befehl listet alle Dateinamen auf, die mit users-i
beginnen , gefolgt von einer Zahl, einem beliebigen gültigen Dateibenennungszeichen außer einer Zahl, dann einem Klein- oder Großbuchstaben und endet mit einem oder mehreren Vorkommen eines beliebigen Zeichens.
$ ls users-[0-9][!0-9][a-zA-Z]*
Das ist jetzt alles! Wenn Sie die obigen Beispiele ausprobiert haben, sollten Sie jetzt ein gutes Verständnis dafür haben, wie Wildcards funktionieren, um Dateinamen in Linux abzugleichen.
Vielleicht möchten Sie auch diese folgenden Artikel lesen, die Beispiele für die Verwendung von Platzhaltern in Linux zeigen:
- So extrahieren Sie Tar-Dateien in ein bestimmtes oder anderes Verzeichnis in Linux
- 3 Möglichkeiten zum Löschen aller Dateien in einem Verzeichnis außer einer oder wenigen Dateien mit Erweiterungen
- 10 nützliche Tipps zum Schreiben effektiver Bash-Skripte unter Linux
- Verwenden von Awk und regulären Ausdrücken zum Filtern von Text oder Zeichenfolgen in Dateien
Wenn Sie etwas mitzuteilen oder eine Frage zu stellen haben, verwenden Sie das Kommentarformular unten.