So suchen Sie nach Inhalten auf Ubuntu

8

Ich möchte den gesamten Server nach Inhalten durchsuchen. (Textdatei)

Wenn ich grep -rl "text here" versuche, friert es ein.

Wie würdest du es machen?

Und wie lange dauert es normalerweise?

webnat0
quelle

Antworten:

17

Sie müssen eine Datei angeben, wenn Sie den grepBefehl verwenden. Mit dem Befehl, den Sie verwenden, suchen Sie in der Standardeingabe ...

Versuchen Sie es grep -r "test" directory.

ChrisJ
quelle
7
find / -name "*.txt" -exec grep "text here" {} \; -print 2>/dev/null

Was in menschlicher Sprache erklärt werden kann als:

  1. finden
  2. ab /
  3. in allen Dateien mit dem Namen * .txt (Anführungszeichen umgehen die Shell-Interpretation)
  4. Führen Sie mit den resultierenden Treffern Folgendes aus
  5. grep "hier testen"
  6. in der Datei {}
  7. Ende der Ausführung (\;) ist dem Ende der Anweisung entkommen
  8. Drucken Sie die passenden Dateien
  9. Fehlermeldungen in der Senke umleiten (da Sie möglicherweise nicht root sind, andernfalls nur sudo).
Alain Pannetier
quelle
es heißt "find: fehlendes Argument für 'grep'"
webnat0
arbeitet hier. Wie haben Sie "Test hier" ersetzt?
Alain Pannetier
1
@ Daeyun: Es gibt nur einen Backslash.
Bis auf weiteres angehalten.
1
@ Tennis. Kommt auf deine Muttersprache an. In Japan und Korea gibt es mehrere Zeichensätze, in denen der Backslash auch als Yen-Zeichen oder Wong-Zeichen (0x5c) dargestellt wird. Schauen Sie sich auch u + 20E5 an. In der Vergangenheit gab es in IIS mehrere Exploits, bei denen Sie die gesamte Festplatte (wo IIS seine Wurzel hatte) eines PCs untersuchen konnten, indem Sie nur echte Schrägstriche und falsche Schrägstriche (anderer im Ascii-Plan konvertierter äquivalenter Unicode) und zumindest Schrägstriche mischten eine mit umgekehrter Solidus-Überlagerung.
Alain Pannetier
0

Wenn Sie vergessen haben anzugeben, welche Art von Dateien Sie durchsuchen möchten, müssen
Sie sich als root anmelden

cd /
grep -rl "text here" *  > /tmp/match.txt

Dies wird sehr lange dauern, und Sie können die Ergebnisse später erfassen, indem Sie /tmp/match.txt überprüfen

ajreal
quelle
0

Der folgende Befehl durchsucht alle Dateien, die mit .txt enden, im aktuellen Arbeitsverzeichnis und in allen Unterverzeichnissen:

find . -type f -name '*.txt' -exec grep -Hn "text here" {} \;


quelle