Bin ich zu blöd? Datei nach Inhalt suchen

Post Reply
Message
Author
User avatar
elwood67
Posts: 232
Joined: 19. May 2004 10:03
Location: Nürnberg

Bin ich zu blöd? Datei nach Inhalt suchen

#1 Post by elwood67 »

Gut, es gibt mc zum suchen von Dateien mit einem bestimmten Inhalt.

Ich möchte aber über die bash rekursiv von "/" eine Dateien finden, die einen bestimmten Inhalt hat.

Jetzt habe ich schon mit ls, cat,grep rumgefummelt und komme aber zu keinem Ergebnis.

Ich habe in zwei Dateien (text-Dateien und auch nur die will ich durchsuchen) mit den Inhalt "hallo ergebnis" .

Wie heisst jetzt die Befehlsreihenfolge, die mir zeigt, in welcher Datei das liegt.

Danke!
Gruß Jürgen
_______________________
Rechner: P4 mit Suse 9.2
_______________________
Und versammeln unsere eigene Armee, um diese Massenvernichtungswaffe zu entschärfen, die wir heute noch unseren Präsidenten nennen...

chrissi

#2 Post by chrissi »

Dann wende grep doch mal richtig an

CheersMichael

#3 Post by CheersMichael »

Code: Select all

grep -r 'inhalt' /pfad/*
Cheers

Michael

Super

#4 Post by Super »

chrissi wrote:Dann wende grep doch mal richtig an
Echt, Schlaubi! :?

chlor

#5 Post by chlor »

@Super
dann erklärs doch besser! :twisted:

ansonsten elwood,
vielleicht hilft dir ne pipe weiter
less datei | grep suchbegriff

man grep
kannst du vielleicht nochmal lesen, um die optionen zu nutzen.

User avatar
jochen
prolinux-forum-admin
Posts: 699
Joined: 14. Jan 2000 15:37
Location: Jülich
Contact:

#6 Post by jochen »

Die Option -r beim grep war mir eigentlich noch nie geheuer. Ohne es jetzt ausprobiert zu haben: Greppt grep dann nicht auch sinnentleert durch die Gerätedateien unter /dev, so man Lesezugriff darauf hat?

Ausserdem ist der Begriff "Textdatei" etwas vage. Wenn man alle normalen Dateien meint, nun gut. Aber was, wenn man beispielsweise damit nur "Dateien mit Endung .txt" meint? Deswegen tippe ich persönlich lieber etwas mehr und nutze find, xargs und grep:

Code: Select all

find / -type f -print0 | xargs -0 grep "hallo ergebnis"
find listet nur normale Dateien auf, -print0 reicht sie durch die Pipe an xargs weiter, der wg. Option -0 erkennt, dass das Null-Byte Trennzeichen für die einzelnen Dateinamen ist und dann die nötigen grep-Kommandos (so wenig wie möglich, so viel wie nötig)zusammenbaut und startet.

Das Schöne an der Lösung ist, dass man durch das find-Kommando sich viel Zeit durch Eingrenzung der Menge möglicher Dateien sparen kann:

Code: Select all

find / -name "*.txt" -type f -print0 | xargs -0 grep "hallo ergebnis"
Jede Menge weitere Möglichkeiten verrät die man-Page zu find.

Jochen
Die grösste Lüge der EDV? "Mal eben..."

Post Reply