grep: Wie schließe ich Verzeichnisse aus?

grep: Wie schließe ich Verzeichnisse aus?

Bei der Verwendung von grep mit Platzhaltern wie in

grep -in github */*

für jedes Verzeichnis grepwerden viele Meldungen angezeigt wie

grep: dir1/dir2: Is a directory

Wie kann man diese Nachrichten unterdrücken?

--exclude-dirZu meiner Überraschung funktioniert die Verwendung der Flagge nicht.

Ich verwende es grep (BSD grep) 2.5.1-FreeBSDunter MacOS.

Antwort1

-d skipbewirkt, dass grep Verzeichnisse überspringt:

grep -in -d überspringen github/

Entsprechenddiese MaxOS-Manpagediese Option sollte für MacOS grep funktionieren. Wenn sich herausstellt, dass dies mit dem MacOS grep nicht funktioniert, können Sie es installieren.Homebrew MacOS-Paketmanagerund installieren Sie dann mit Homebrew dieGNU-Version von grep, da GNU grep dies unterstützt -d skip(in diesem Fall müssen Sie jedoch das Verzeichnis, das GNU grep enthält, an die erste Stelle in Ihrer PATHUmgebungsvariable setzen).

Antwort2

Verwenden Sie findfürfindenDateien grepundg/re/pinnerhalb der Dateien:

find . -mindepth 2 -maxdepth 2 -type f -exec grep -in github {} \;

Die Namen der einzelnen Werkzeuge enthalten wichtige Hinweise auf ihren Zweck :-).

verwandte Informationen