Suchmuster für Dateien – Linux

Wenn man auf einem Linux System unterwegs ist, sollte man sich ein paar Tricks aneignen um effizienter arbeiten zu können. Dazu gehört es zum Beispiel einfache Suchmuster auf der Shell zu verwenden. Dies spart Zeit und ist zudem für eine LPIC Zertifizierung erforderliches Wissen.

Suchmuster braucht man vor allem dann, wenn man Kommandos auf mehrere Dateien gleichzeitig ausführen will. Wir machen uns hierbei das sogenannte Globbing zum Vorteil. Dies wird allerdings nicht von jedem Befehl unterstützt. Also nicht wundern wenn es mal nicht funktioniert.

Ich habe mir zum Testen der Suchmuster zwei Ordner angelegt, test und foo. Wie das funktioniert habe ich ja bereits im Artikel Aufbau und Umgang mit der Verzeichnisstruktur gezeigt. Im Ordner test habe ich mit touch drei Dateien, test1.txt, test2.txt und test3.txt angelegt.

Diese drei Dateien will ich nun von test nach foo kopieren. Dafür könnte ich drei mal den kopier Befehl nehmen, oder ich verwende als Suchmuster einen Stern. Das Resultat wäre das selbe:

Wie man sieht, ist der zweite Befehl mit Suchmuster deutlich kürzer. Der Stern dient hier als Platzhalter (Wildcard) für eines oder mehrere Zeichen. Das ist sehr praktisch, wenn man zum Beispiel alle Dateien mit einer bestimmten Dateiendung kopieren will.

Es gibt aber auch die Möglichkeit, dieses Suchmuster noch etwas einzuschränken. Um dies zu demonstrieren, legen wir im Ordner foo nun eine Datei mit dem Namen otto1.txt an. Damit haben wir vier Dateien in diesem Ordner. Wenn wir jetzt aber nur die drei Testdateien kopieren wollen, passen wir den kopier Befehl mit dem Wildcard einfach wie folgt an und kopieren die drei Dateien wieder nach test:

Wir haben das Suchmuster jetzt so eingeschränkt, dass alle Dateien die kopiert werden, mit einem t anfangen müssen.

Mit dem Stern haben wir hier schon ein sehr nützliches Suchmuster, was mir selbst im täglichen leben oft weiter hilft.
jetzt gibt es aber auch mal Fälle, wo man damit einfach zu viele Dateien erwischt, die man gar nicht braucht. Im Ordner test legen wir jetzt noch eine weitere Datei mit dem Namen test.txt an.

Jetzt wollen wir alle Dateien mit dem Namen test, dann einer Zahl (1,2,3) und der Extension .txt nach foo kopieren. Unsere neu angelegt Datei test.txt soll im Ordner test bleiben. Dafür können wir das Fragezeichen als Wildcard verwenden.

Das Fragezeichen heißt übersetzt, dass an dieser Stelle ein beliebiges Zeichen stehen darf.

Das ganze würde als Befehl dann so aussehe:

Das ganze kann man auch noch weiter einschränken. Ich will jetzt aus dem Ordner foo nur die beiden Dateien test1.txt und test2.txt zurück nach test kopieren. Dafür füge ich nun eine Zeichenklasse in den kopier Befehl ein. Das ganze würde dann so aussehen:

Die eckigen Klammer signalisieren also immer eine Zeichenklasse. Hier mal eine kleine Übersicht, was man so alles mit Zeichenklassen machen kann.

  • [1-9] – An dieser Stelle muss eine Zahl zwischen 1 und 9 stehen
  • [A-Z] – An dieser Stelle muss ein Buchstabe zwischen A und Z stehen. Achtung! Dieser muss groß sein.
  • [A-Za-z] – An dieser Stelle muss ein beliebiger Buchstabe stehen
  • [!A-za-z] – An dieser Stelle darf keiner der Buchstabe stehen

Zu guter letzt wollen wir uns Geschweifte Klammern anschauen. Das ist zwar nicht direkt ein Suchmuster, es ist aber nützlich wenn man einige Dateien nach einem bestimmten Schema anlegen muss.

Als Test wollen wir die Dateien hund.txt, katze.txt und maus.txt anlegen. Hier ein Beispiel wie das mit geschweiften Klammern vereinfacht werden kann:

Ich muss also nur die variablen Namen in die geschweifte Klammer schreiben und kann damit alle drei Dateien in einem Schritt anlegen und muss nicht drei Befehle dafür ausführen. Die geschweiften Klammern lassen sich auch kombinieren. Wenn ich zum Beispiel die Dateien a1.txt, a2.txt, a3.txt, b1.txt, b2.txt, b3.txt anlegen will, dann würde das so aussehen:

Ich hoffe ich konnte euch mit dem Artikel etwas weiterhelfen. Fragen dazu gerne in die Kommentare

About Christian Piazzi

Ich blogge hier über alles, was mir so in meinem ITler Altag über den Weg läuft =)
Man findet mich privat bei Google+ und Twitter

Speak Your Mind

*