GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So suchen Sie nach einem Wort im gesamten Inhalt eines Verzeichnisses in Linux

xargs erwartet Eingaben in einem Format, das kein anderer Befehl erzeugt, daher ist es schwierig, ihn effektiv zu verwenden. Was hier falsch läuft, ist, dass Sie eine Datei haben, deren Name bei der Eingabe in xargs in Anführungszeichen gesetzt werden muss (enthält wahrscheinlich einen ' ).

Wenn Ihr grep den -r unterstützt oder -R Option für die rekursive Suche, verwenden Sie sie.

grep -r word .

Verwenden Sie andernfalls den -exec primär von find . Dies ist der übliche Weg, um den gleichen Effekt wie xargs zu erzielen , außer ohne Einschränkungen für Dateinamen. Ziemlich aktuelle Versionen von find ermöglichen es Ihnen, mehrere Dateien in einem einzigen Aufruf des Hilfsbefehls zu gruppieren. Bestehen von /dev/null bis grep stellt sicher, dass der Dateiname vor jeder Übereinstimmung angezeigt wird, selbst wenn er zufällig für eine einzelne Datei aufgerufen wird.

find . -type f -exec grep word /dev/null {} +

Ältere Versionen von find (auf älteren Systemen oder OpenBSD oder reduzierten Dienstprogrammen wie BusyBox) kann den Hilfsbefehl nur für eine Datei gleichzeitig aufrufen.

find . -type f -exec grep word /dev/null {} \;

Einige Versionen von find und xargs haben Erweiterungen, mit denen sie korrekt kommunizieren können, indem sie Nullzeichen verwenden, um Dateinamen zu trennen, sodass keine Anführungszeichen erforderlich sind. Heutzutage hat nur OpenBSD diese Funktion ohne -exec … {} + .

find . -type f -print0 | xargs -0 grep word /dev/null

Ich vermute, du meinst die erste Option

grep rekursiv, zum Suchen von Inhalten in Dateien

grep -R "content_to_search" /path/to/directory

ls rekursiv, um passende Dateien zu suchen

ls -lR | grep "your_search"

Wenn Sie die GNU-Tools haben (was Sie tun, wenn das Linux-Tag korrekt ist), können Sie -print0 verwenden und -0 um die üblichen Zitierprobleme zu umgehen:

find . -type f -print0 | xargs -0 grep word

Linux
  1. So erstellen Sie ein freigegebenes Verzeichnis für alle Benutzer in Linux

  2. Linux – Woher wissen Sie, wofür Sie in Dmesg grep müssen?

  3. Wie kann ich dos2unix auf einem ganzen Verzeichnis ausführen?

  4. Linux sucht nach Wort und zeigt ganze Zeile

  5. Wie kombiniert man find und grep für eine komplexe Suche? ( GNU/Linux, finden, grep )

So finden Sie Dateien in Linux mit dem Find-Befehl

So verwenden Sie den grep-Befehl unter Linux/UNIX

So zählen Sie Dateien im Verzeichnis in Linux

So finden Sie eine Zeichenfolge in einer Datei unter Linux

So suchen Sie nach Dateien über die Linux-Befehlszeile

So ermitteln Sie die Gesamtgröße eines Verzeichnisses in Linux