Zeichenfolge in Dateien und Unterverzeichnisse Suchen

3.7
(3)

Suche nach Text und Zeichenfolgen in Dateien und Unterverzeichnissen mit Resultat in Variablen zuweisen

Bei der Suche nach Zeichenfolgen in Dateien bedient man sich gebräuchlich des Windows Explorer oder Windows-Search, bei Linux mit Gnome Desktop ist es Nautilus oder Nemo, und unter macOS geht man zum Finder.

Bei der automatisierten Verarbeitung durch Scripts und Batch-Prozesse helfen Command-Line Befehle. In diesem Post wird gezeigt, wie man bei der Suche von Zeichenfolge vorgehen kann, in Windows Command Prompt und in der Linux Shell.

Suchen in der Eingabeaufforderung

Bei der Windows Eingabeaufforderung (cmd) bietet sich der Befehl findstr an, wie folgendes Beispiel zeigt.

findstr /s /i "dolor" *.*
doc.txt:Lorem ipsum dolor sit amet

Soll nun das Resultat einer Variable zugewiesen werden, für die weiterverarbeitung in Scripts, kann dies in einer FOR-Schleife ermöglicht werden, folgende Zeilen werden in einer CMD-Datei gespeichert und ausgeführt.

@echo off
for /f "delims=" %%A in ('dir ^| findstr /s /i "dolor" *.*') do set "var=%%A"
echo %var%

Es wird mit echo die gesamte Zeile mit dem gesuchten Wort dolor ausgegeben, möchte man die Ausgabe nur auf die Zeichen eines Wortes eingrenzen, ist dies mit Variablen Parameter zu erreichen.

doc.txt:Lorem ipsum dolor sit amet 
1234567890123456789012345678901234

Ab dem Zeichen 20 ist unser Wort dolor, es ist 5 Zeichen lang.
Die CLI Eingabe findstr dolor bringt nun dolor zur Ausgabe die in der Datei doc.txt gefunden wurde.

@echo off 
for /f "delims=" %%A in ('dir ^| findstr /s /i %1 *.*') do set "var=%%A" 
echo %var:~20,5%

Der Variable var wird die Ausgabe von findstr zugewiesen.

Suchen in der Linux Shell

$ grep -r "dolor" *
Dokumente/doc.txt:Lorem ipsum dolor sit amet

In der Linux bash Console kommt grep und find zur Anwendung.

$ find . -type f -print0 | xargs -0 grep "dolor"
./Dokumente/doc.txt:Lorem ipsum dolor sit amet

Die Textsuche mit grep gestaltet sich wie folgt, das Resultat wird der Variable var zugewiesen, und mit echo ausgegeben.

$ var=`grep -r "dolor" *`
$ echo $var
Dokumente/doc.txt:Lorem ipsum dolor sit amet

Es soll bei der Suche mit grep nicht die gesamte Zeile ausgegeben werden, sondern nur das dritte Wort.

$ var=`grep -r "dolor" * | awk '{ print $3 }'`
$ echo $var
dolor

Fazit

Es gibt viele weitere Möglichkeiten vor allem in der Linux bash, der Befehl find ist sehr umfangreich und bietet mit xargs auch reguläre Ausdrücke und weitere Commands zur Übergabe, mit find --help erhält man sämtliche Anwendungsmöglichkeiten. Hier soll lediglich ein Einstieg zur Anwendung und die Vorgehensweise aufgezeigt werden.

Wie hilfreich war dieser Beitrag?

Klicke auf die Sterne um zu bewerten!

Durchschnittliche Bewertung 3.7 / 5. Anzahl Bewertungen: 3

Bisher keine Bewertungen! Sei der Erste, der diesen Beitrag bewertet.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert