Bash -Muster -Matching

Bash -Muster -Matching

Das Bash -Muster -Matching ist ein unverzichtbares Konzept, das bei der Auswahl verschiedener Dateinamen aus einem Verzeichnis nützlich ist und überprüft, ob eine Zeichenfolge mit einem bestimmten Format übereinstimmt. Unabhängig davon.

Musteranpassung

Bash bietet hauptsächlich zwei Arten von Musteranpassungen an: Globs Und erweiterte Globus. Die beiden bieten den Benutzern einfache Möglichkeiten, die Dateinamen auszuwählen und die verschiedenen Zeichenfolgen gegen bestimmte Regeln zu überprüfen. Bash unterstützt jedoch auch die Verwendung Regex, insbesondere bei der Arbeit mit Skripten, um verschiedene Benutzereingaben und Parsen zu validieren.

1. Bash -Muster mit GLIPS abgestimmt

Die Übereinstimmung des Glob -Musters umfasst hauptsächlich die Überprüfung bestimmter Dateinamen in einem bestimmten Verzeichnis. Sie werden als als bezeichnet als Wildcards. Es gibt drei Arten von Bash -Glob -Mustern:

2. Sternchen (*)

Es wird verwendet, wenn Sie mit Null oder mehr Dateinamen übereinstimmen möchten.

Lassen Sie uns einige Beispiele haben.

Überprüfen Sie die Dateinamen, die mit einem bestimmten Charakter beginnen oder enden

Zum Beispiel, wenn wir nach einer Datei suchen mussten, beginnend mit l oder li, Wir könnten die folgenden Befehle verwenden:

ls l*
ls li*

Beachten Sie, wie es allen Dateinamen übereinstimmt, die mit LI oder L im aktuellen Verzeichnis beginnen, einschließlich der Verzeichnisse.

Um nur mit Verzeichnissen übereinzustimmen, fügen Sie die / nach der Wildcard hinzu, wie im Folgenden gezeigt:

In ähnlicher Weise, wenn wir mit den Dateinamen übereinstimmen mussten Das Ende mit einem bestimmten Charakter oder Charaktere können wir die Wildcard verwenden, wie in der folgenden Abbildung gezeigt. In diesem Beispiel stimmen wir mit den Dateinamen ab, die mit enden e.

ls *e

Nehmen wir an, dass Sie sich des Dateinamens, nach dem Sie suchen möchten, nicht sicher sind, aber Sie kennen die angegebenen Zeichen. Wie im folgenden Beispiel können Sie immer noch die Dateinamen übereinstimmen, indem Sie die Wildcard vor und nach den Charakteren hinzufügen.

Wir haben die Dateinamen übereinstimmen, die die enthalten Nux Schlüsselwort in ihrem Namen.

Überprüfen Sie Dateien mit einer bestimmten Erweiterung

Mit dem Bash -Muster -Matching können Sie die Dateien mit einer bestimmten Erweiterung suchen. Zum Beispiel, wenn Sie alle PDFs oder Textdateien finden möchten. In diesem Fall fügen Sie die Wildcard vor der Dateierweiterung hinzu. Sehen wir uns das folgende Beispiel an, um alle Textdateien zu entsprechen:

ls *.txt

Alle Textdateien sind wie im Folgenden angepasst:

3. Fragezeichen (?)

Das Fragezeichen Wildcard entspricht den Dateinamen, die einem einzelnen Charakter entsprechen. Sie müssen jedoch die Anzahl der Zeichen kennen, die ein bestimmter Dateiname so hat, so dass jeder “?”Repräsentiert jeden Charakter.

Zum Beispiel, um einen Dateinamen mit vier Zeichen anzupassen, aber wir kennen den letzten Charakter, könnten wir das folgende Beispiel haben:

ls ???e

Um eine bestimmte Erweiterung zu finden, bei der Sie die Anzahl der Zeichen des Dateinamens kennen, können wir den folgenden Befehl verwenden:

ls ?????.txt

4. Eckige Klammern []

Wenn Sie eine spezifischere Suche möchten, z. B. die Übereinstimmung der Dateinamen, die die angegebenen Zeichen enthalten.

Zum Beispiel können wir den folgenden Befehl haben, um die Dateinamen oder Zahlen zu entsprechen, die unabhängig von der Erweiterung angegeben sind:

ls [e-m]*.*

Hier stimmen wir mit den Dateinamen überein, die ein Zeichen von E bis m enthalten und eine Erweiterung haben.

Wenn Sie mit den Dateinamen mit bestimmten Zeichen übereinstimmen möchten, sagen wir an, wir können das folgende Muster verwenden:

ls [f-l]*.txt*

5. Bash -Muster mit ausgedehnten Globs übereinstimmen

Erweiterte Globs haben eine große Ähnlichkeit mit regulären Ausdrücken. Sie werden jedoch standardmäßig ausgeschaltet. Wenn Sie sie verwenden müssen, müssen Sie sie mit dem folgenden Befehl einschalten:

$ Shopt -s extglob

Die erweiterten Globs umfassen:

6. ?(Muster)

Es wird verwendet, wenn Sie mit dem Zusammenhang mit dem Zusammenhang stehen Null oder eins Auftreten des angegebenen Musters.

Wenn Sie beispielsweise alle Dateinamen mit einer bestimmten Erweiterung oder solchen, die bestimmte Zeichen in ihrer Benennung enthalten, übereinstimmen möchten, können wir den folgenden Befehl haben:

$ ls ?(* nux* |*.Sch)

7. *(Muster)

Es wird verwendet, wenn Sie mit dem Zusammenhang mit dem Zusammenhang stehen Null oder mehr Vorkommen des angegebenen Musters.

Zum Beispiel könnten wir den folgenden Befehl verwenden, um die Dateinamen mit Null oder mehr „F“ zu entsprechen und Textdateien sind:

$ ls *(f).txt

8. +(Muster)

Es wird verwendet, wenn Sie mit dem Zusammenhang mit dem Zusammenhang stehen ein oder mehr Vorkommen des angegebenen Musters.

Wenn wir den vorherigen Befehl ausführen, beachten Sie, dass er nur mit den Dateinamen übereinstimmt, die mindestens einen „F“ enthalten müssen, was bedeutet, dass die .txt Datei wird nicht überein sein.

$ ls +(f).txt

9. @(Muster)

Es wird verwendet, wenn das angegebene Muster angepasst wird.

Wenn wir nur mit den Dateinamen übereinstimmen müssen, die nur ein „F“ mit demselben Muster enthalten, das im vorherigen Beispiel verwendet wird, können wir die @ wie im Folgenden gezeigt verwenden:

$ ls @(f).txt

10. !(Muster)

Es wird verwendet, wenn Sie alles andere anpassen möchten, was nicht mit dem angegebenen Muster übereinstimmt.

Lassen Sie uns ein Beispiel haben, in dem wir alle Dateinamen mit dem angegebenen Muster übereinstimmen möchten. In diesem Beispiel stimmen wir alle Dateinamen ab, die keine Textdateien oder Bash -Skripte sind. Der Befehl lautet wie folgt:

$ ls !(*.txt |*.Sch)

Abschluss

In diesem Leitfaden wurde das Bash -Muster -Matching und die verschiedenen Beispiele vorgestellt, um sicherzustellen, dass Sie verstehen, wie Sie mit den verschiedenen Musteranpassungsoptionen arbeiten können. Mit dieser Fundament können Sie Ihr Bash -Muster -Matching vorantreiben und dieselbe Logik verwenden, wenn Sie die verschiedenen Muster am Terminal oder beim Erstellen der Bash -Skripte übereinstimmen möchten.