Ich habe eine Reihe von .html-Dateien in einem Verzeichnis. Ich möchte jede Datei durchsehen und ein Muster (MD5) abgleichen. All das ist einfach genug. Das Problem ist, ich muss wissen, in welcher Datei die Übereinstimmung gefunden wurde.
cat *.html | grep 75447A831E943724DD2DE9959E72EE31
Gibt nur den Inhalt der HTML-Seite zurück, in der die Übereinstimmung gefunden wurde, aber nicht die Datei, in der sie gefunden wurde.
command-line
grep
Sei mein Freund
quelle
quelle
Antworten:
quelle
-H
ist dies nicht erforderlich.cat
.cat
bedeutet verketten. Wenn Sie alle Dateien zusammenfassen, bevor Sie sie übergebengrep
,grep
sehen Sie nur eine große Standardeingabedatei und können ( abgesehen von Wahrsagerei) keine Informationen über die einzelnen Dateien zurückgeben. Sehen?. Cyrus, was ist mit der Erklärung in der Antwort?Ich benutze diese Option immer, um nach Dateien zu suchen, die eine Zeichenfolge enthalten, und zwar REKURSIV in einem Verzeichnis (das heißt, wenn ein beliebiger Unter-Unter-Ordner durchlaufen wird).
grep -Ril "yoursearchtermhere"
R
ist rekursiv zu suchen (folgende Symlinks)i
ist es, die Groß- und Kleinschreibung zu ignorierenl
ist nur um den Namen der Dateien aufzulisten.Die Beantwortung Ihrer Frage reicht
grep -l '75447A831E943724DD2DE9959E72EE31' *.html
also aus, aber Sie können einfachgrep -Ril '75447A831E943724DD2DE9959E72EE31'
in einer beliebigen Datei in einem beliebigen Unterordner nach dieser Zeichenfolge suchen, bei der die Groß- und Kleinschreibung nicht beachtet wirdquelle
stdin
( grep: warning: rekursive Suche nach stdin vorausgesetzt , was auch immer rekursive stdin-Eingabe bedeuten würde :-). Mit anderen Worten:grep -Ril 'texttofind' *
grep -RiH 'pattern'
zeigt Dateinamen und übereinstimmende ZeileSie können dies versuchen
quelle
Als Alternative
Wenn Sie dies tun, wird rekursiv in Ordnern und Unterordnern gesucht und der Pfad der Datei ausgegeben ...
quelle
Die Antwort von Cyrus ist absolut richtig und lautet "The Right Way TM" ,
grep
wenn wir nur Dateien finden müssen . Wenn Dateinamen zusätzliche Parsing- oder Operationen für die übereinstimmenden Dateinamen benötigen , können wir auf die Verwendung vonwhile
loop withif
statement zurückgreifen . Hier ist ein Beispiel, in dem die Liste der Dateinamen aus einer häufig verwendetenfind
+while
Struktur zum sicheren Parsen von Dateinamen stammt.quelle
grep
‚s--include
Flagge.