Unix: Suchen von Text/Strings in Dateien unterschiedlicher Verzeichnisse

Zur Suche von Textteilen/Strings in bestimmten Dateien, die in verschiedenen Verzeichnissen liegen, kann folgendes Kommando verwendet werden:

 

find . -name *.txt -exec grep Bauteil {} \; -print

Bauteilliste:
ingesamt 25 Bauteile
./relativer_verzeichnispfad_1/datei_1.txt
hohe Bauteile, größer 2m kommen
kleine Bauteile werden getragen
Bauteillisten gibt es unter ...
./relativer_verzeichnispfad_2/datei_2.txt

 

Das Suchkommando find startet vom aktuellen Verzeichnis „.“ die Suche im aktuellen und in allen Unterverzeichnissen nach Dateien mit der Endung *.txt.
Die gefundenen Dateien werden mit dem nach -exec angegebenem grep Kommando nach dem String „Bauteil“ durchsucht und die gefundenen Zeilen mit -print ausgegeben.
Eine Besonderheit ist, das erst die gefundenen Zeilen und danach die den String enthaltene Datei angezeigt wird. Dabei steht der Dateiname mit dem relativen Pfad von der aktuellen Position im Dateisystem.

Eine Alternative zu dem -exec Schalter im find ist die Übergabe der Dateinamen an das Kommando xargs via Pipe:

find . -name *.txt | xargs grep Bauteil 

./relativer_verzeichnispfad_1/datei_1.txt:Bauteilliste:
./relativer_verzeichnispfad_1/datei_1.txt:ingesamt 25 Bauteile
./relativer_verzeichnispfad_2/datei_2.txt:hohe Bauteile, größer 2m kommen
./relativer_verzeichnispfad_2/datei_2.txt:kleine Bauteile werden getragen
./relativer_verzeichnispfad_2/datei_2.txt:Bauteillisten gibt es unter ...

 


Schreibe einen Kommentar

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