Dateiname der Regex-Übereinstimmung
Die Linux-Befehlszeile enthält viele Optionen, die wir verwenden können, um nach Dateien zu suchen. Eine der leistungsstärksten Funktionen ist der Abgleich von Regex-Mustern (regulärer Ausdruck). Diese Konvention ermöglicht es uns, unser Dateisystem auf der Grundlage sehr detaillierter Namensmuster zu durchsuchen, die in den Dateinamen zu finden sind – zum Beispiel die Möglichkeit, nach allen Dateien zu suchen, die mit einem A beginnen und mit einem K enden. In Regex würde dies ^A.*K$.
geschrieben werden. In diesem Tutorial erfahren Sie, wie Sie reguläre Ausdrücke verwenden, um Dateinamen auf einem Linux-System abzugleichen. Auf diese Weise können Sie Dateien mit sehr granularer Präzision finden und isolieren. Selbst wenn Sie nur sehr wenige Informationen über einen Dateinamen haben, gibt es in der Regel eine Art Regex-Muster, das ihn für Sie finden kann. Schauen wir uns im Folgenden einige Befehlsbeispiele an.
In diesem Tutorial lernen Sie:
- Wie man Muster abgleicht und Rohre verwendet
- Was sind Meta-Charaktere und was machen sie?
- So suchen Sie mit regulären Ausdrücken nach Dateinamen
Zuordnen von Mustern und Verwenden von Rohren
Zwei der Tools, die wir in diesem Tutorial verwenden werden, sind ls und grep. Diese Befehle können verwendet werden, um eine Datei mit Leichtigkeit anhand ihres Namens zu finden. Hier ist ein Beispiel:
ls | grep file
somefile1.txt
Das Zeichen pipe | ermöglicht es uns, die Ausgabe von ls an den grep-Befehl zu übergeben, der uns dann nur die Ausgabe anzeigt, die unsere Suchanforderung erfüllt, was in diesem Fall "file" ist. So war es möglich, somefile1.txt im aktuellen Verzeichnis zu finden.
Metazeichen für reguläre Ausdrücke
Reguläre Ausdrücke sind praktisch, da sie in der Lage sind, Dateinamen basierend auf komplexeren Mustern zu isolieren. Hier ist ein Beispiel, in dem wir nach allen Dateien suchen, die mit s beginnen und mit .txt Dateiendung enden.
ls | grep ^s.*.txt$
somefile1.txt
In diesem Fall haben wir vier Metazeichen verwendet, . das auf jedes Zeichen passt, * entspricht dem Zeichen unmittelbar davor beliebig oft, ^ was den Anfang des Strings angibt, und $ gibt das Ende des Strings an.
Zusätzlich zu diesen gibt es eine Vielzahl anderer Meta-Charaktere. In der folgenden Tabelle finden Sie eine vollständige Liste.
| Meta-Charakter | Beschreibung |
|---|---|
| . (Punkt) | Passt zu einem beliebigen Charakter, unabhängig davon, um welchen Charakter es sich handelt |
| ? | Entspricht dem Zeichen unmittelbar davor, entweder null Mal oder einmal |
| * | Entspricht dem Zeichen unmittelbar davor beliebig oft, einschließlich Null (das Zeichen darf überhaupt nicht in der Zeichenfolge enthalten sein) |
| + | Stimmt ein- oder mehrmals mit dem Zeichen unmittelbar davor überein (das Zeichen muss mindestens einmal in der Zeichenfolge enthalten sein) |
| ^ | Gibt an, dass die folgenden Zeichen nur am Anfang der Zeichenfolge stehen |
| $ | Gibt an, dass die Zeichen, die ihm vorausgehen, am Ende der Zeichenfolge stehen |
| \d | Entspricht jeder Dezimalstelle |
| \D | Entspricht jedem Zeichen, das keine Dezimalziffer ist |
| \s | Entspricht einem Tabulator- oder Leerzeichen |
| \S | Entspricht jedem Zeichen, das kein Tabulator oder Leerzeichen ist |
| \w | Entspricht jedem Buchstaben, jeder Ziffer oder dem Unterstrich |
| \W | Entspricht jedem Zeichen, das kein Buchstabe, keine Ziffer oder ein Unterstrich ist |
| \ | Escape-Zeichen, das die Verwendung eines beliebigen Metazeichens mit seiner regulären Tastaturbedeutung ermöglicht. Zum Beispiel\. Entspricht einem Punkt (.) in einem regulären Ausdruck. Ein Punkt (.) entspricht einem beliebigen Zeichen, unabhängig davon, um welches Zeichen es sich handelt. |
Beispiele für Dateinamen für Regex-Übereinstimmungen
Basierend auf dem oben genannten Wissen können wir alles, was wir gelernt haben, in einigen komplizierteren Linux-Befehlszeilenbeispielen kombinieren, die reguläre Ausdrücke verwenden. Einfach ausgedrückt ermöglicht uns ein regulärer Ausdruck, mithilfe von Metazeichen nach einem Muster innerhalb einer Zeichenkette zu suchen.
Übereinstimmung mit Dateinamen, die mit dem Zeichen
gbeginnen.ls | grep ^gÜbereinstimmung mit Dateinamen, die mit einem
S-Zeichenenden.ls | grep S$Gleichen Sie einen Satz von Zeichen mit eckigen Klammern ab. Gleichen Sie z. B. Dateinamen ab, die mit den Zeichen
ooderibeginnen:ls | grep ^[o,i]Ordnen Sie Dateinamen, die eine festgelegte Anzahl von Platzhalterzeichen enthalten, mit dem Metazeichen
.ab. Zum Beispiel:ls | grep file..txt file1.txt file2.txt file3.txtDer vorherige Befehl stimmt nicht mit einer Datei wie
file10.txt überein,da zwischen "file" und ".txt" zwei Zeichen stehen.
Abschließende Gedanken
In diesem Tutorial haben wir gesehen, wie man Dateinamen mit regulären Ausdrücken auf einem Linux-System abgleicht. Wir haben gelernt, wie die Verwendung von Metazeichen verwendet werden kann, um mit sehr hoher Präzision nach Dateinamen zu suchen. Schließlich haben wir einen Rundgang durch einige der am häufigsten verwendeten Operatoren für reguläre Ausdrücke gemacht, indem wir Beispiele mit dem Befehl grep gesehen haben.
