Grep und find – ein starkes Team

Erinnern Sie sich an die letzte Folge, in der es um find ging? Dort wurde von einer Kombination der Befehle mit -exec gesprochen. Eine tolle Sache – denn jetzt lassen sich ganze Verzeichnisbäume rekursiv nach Zeichenketten durchsuchen. grep alleine reicht hier nicht aus, eine sinnvolle Zusammensetzung der Kommandos könnte so aussehen:

huhn@huehnerstall ~ > find . -exec grep -l bla '{}' ';'
./test/datei2
./datei3
./datei1

Im Unterschied zum Aufruf grep bla * werden hier die von find gefundenen Dateien einzeln an grep übergeben. In diesem Fall zeigt grep ohne die Option -l nicht die Datei an, in der das Suchmuster gefunden wurde, was bei mehreren Treffern leicht unübersichtlich wird.

Möchte man nur bestimmte Dateien durchforsten, kann man die Auswahl der von find zu findenden Files in verschiedener Weise einschränken: Um beispielsweise alle .tex-Dateien in allen Unterverzeichnissen nach dem String \usepackage zu durchsuchen, schreibt man

find . '*.tex' -exec grep -l '\usepackage' '{}' ';'

Hinweis:

grep

und Verzeichnisse

Die meisten grep-Versionen geben eine Fehlermeldung aus, wenn man ihnen als Argument einen Verzeichnisnamen übergibt. Möchte man dieses verhindern, kann man die von find ausgewählten Dateien z. B. mit der Option -type f auf reguläre Dateien beschränken.

grep findet keine Klartext-Suchmuster in komprimierten Dateien. Dazu kann man stattdessen das Kommando zgrep verwenden (siehe auch die man-Page dazu). Übrigens: Alles über komprimierte Dateien gibt's in der nächsten "Zu Befehl"-Folge – bis dahin fröhliches Greppen!

Glossar

Shell

Der Kommandozeileninterpreter – hier werden die Befehle, die Sie eintippen, dem Betriebssystem verständlich gemacht. Wie auf anderen Unix-Systemen kann man zwischen den gängigen Shell-Modellen wählen: bash (die Linux-Standard-Shell), ksh, csh etc.

Wildcards

Sonderzeichen, die Teile von Zeichenketten unbestimmt lassen. Ein Fragezeichen ? in einer Zeichenkette lässt nur denjenigen Buchstaben dieser Zeichenkette unbestimmt (z. B. h?llo => hallo, hGllo, h7llo,…), an dem sich das Fragezeichen befindet, während ein * für beliebig viele verschiedene Zeichen steht (z.B. G*ss => Guss, Genuss). Ruft man beispielsweise grep bla * auf, werden alle Dateien im aktuellen Verzeichnis nach "bla" durchsucht.

Kontext

Eigentlich bedeutet Kontext soviel wie "Zusammenhang" – übertragen auf Textdateien sind dies Zeilen, die unmittelbar vor und hinter der Fundstelle liegen. Sich diese Zeilen mit ausgeben zu lassen, hilft Ihnen dann, besser zu erkennen, welchen Ausschnitt des Textes grep gefunden hat, weil er nicht mehr so "aus dem Kontext gerissen" ist.

Pager

Ein Programm, das die Bildschirmausgabe eines anderen Programms abfängt und seitenweise anzeigt, z. B. less oder more.

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

  • Zu Befehl: Suchen mit grep, egrep, fgrep, (b)zgrep
    Für die Suche nach Wörtern und Ausdrücken in Textdateien bieten sich die Kommandos der grep-Familie an. Als Ergebnis zeigen sie wahlweise die gefundenen Zeilen, die Namen der Dateien, in denen das Suchmuster vorkommt, oder die Anzahl der Treffer an.
  • The Answer Girl
    Dass der Computeralltag auch unter Linux immer wieder für Überraschungen gut ist, ist eher eine Binsenweisheit: Immer wieder funktionieren Dinge nicht oder nicht so, wie eigentlich angenommen. Das Answer-Girl im Linux-Magazin zeigt, wie man mit solchen Problemchen elegant fertig wird.
  • sed
    Der Stream-Editor sed hilft beim automatischen Verändern einer oder mehrerer Dateien, vereinfacht sich wiederholende Änderungen oder erstellt gleich ganze Konvertierungsprogramme. Monotone Aufgaben der Textverarbeitung lassen sich so im Handumdrehen lösen.
  • Suche in komprimierten Dateien und Archiven
    Über die Kommandozeile flink in komprimierten Dateien und Archiven zu suchen, spart viel Zeit. Die richtigen Tools dazu bringt praktisch jedes Linux-System von Haus aus mit.
  • Hardcore Linux
    Dieser Teil der Serie über die Bash stellt die Grundlagen für die Arbeit mit mehreren und verketteten Befehlen auf der Bash zusammen.
Kommentare

Infos zur Publikation

LU 11/2014: VIDEOS BEARBEITEN

Digitale Ausgabe: Preis € 4,95
(inkl. 19% MwSt.)

Mit der Zeitschrift LinuxUser sind Sie als Power-User, Shell-Guru oder Administrator im kleinen Unternehmen monatlich auf dem aktuelle Stand in Sachen Linux und Open Source.

Sie sind sich nicht sicher, ob die Themen Ihnen liegen? Im Probeabo erhalten Sie drei Ausgaben zum reduzierten Preis. Einzelhefte, Abonnements sowie digitale Ausgaben erwerben Sie ganz einfach in unserem Online-Shop.

NEU: DIGITALE AUSGABEN FÜR TABLET & SMARTPHONE

HINWEIS ZU PAYPAL: Die Zahlung ist auch ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!       

Tipp der Woche

Schnell Multi-Boot-Medien mit MultiCD erstellen
Schnell Multi-Boot-Medien mit MultiCD erstellen
Tim Schürmann, 24.06.2014 12:40, 0 Kommentare

Wer mehrere nützliche Live-Systeme auf eine DVD brennen möchte, kommt mit den Startmedienerstellern der Distributionen nicht besonders weit: Diese ...

Aktuelle Fragen

WLAN-Signalqualität vom Treiber abhängig
GoaSkin , 29.10.2014 14:16, 0 Antworten
Hallo, für einen WLAN-Stick mit Ralink 2870 Chipsatz gibt es einen Treiber von Ralink sowie (m...
Artikelsuche
Erwin Ruitenberg, 09.10.2014 07:51, 1 Antworten
Ich habe seit einige Jahre ein Dugisub LinuxUser. Dann weiß ich das irgendwann ein bestimmtes Art...
Windows 8 startet nur mit externer Festplatte
Anne La, 10.09.2014 17:25, 6 Antworten
Hallo Leute, also, ich bin auf folgendes Problem gestoßen: Ich habe Ubuntu 14.04 auf meiner...
Videoüberwachung mit Zoneminder
Heinz Becker, 10.08.2014 17:57, 0 Antworten
Hallo, ich habe den ZONEMINDER erfolgreich installiert. Das Bild erscheint jedoch nicht,...
internes Wlan und USB-Wlan-Srick
Gerhard Blobner, 04.08.2014 15:20, 2 Antworten
Hallo Linux-Forum: ich bin ein neuer Linux-User (ca. 25 Jahre Windows) und bin von WIN 8 auf Mint...