
Das funktioniert bei mir, da es das Verzeichnis „foo“ aus dem Stammverzeichnis der Suche ausschließt:
grep -rn --exclude-dir=foo 'custom'
Das hier funktioniert allerdings nicht:
grep -rn --exclude-dir=foo/bar 'custom'
Aber das Verzeichnis "foo/bar" wird immer noch durchsucht. Ich habe es auch mit Anführungszeichen versucht:
grep -rn --exclude-dir='foo/bar' 'custom'
Ich verwende Ubuntu 20.
Aktualisieren
Obwohl es nicht perfekt ist, habe ich stattdessen diesen Workaround verwendet:
grep -rn 'custom'|grep -v 'foo/bar'
Zeilen, die sowohl „foo/bar“ als auch „custom“ enthalten, werden nicht gefunden.
Antwort1
Ich bin gerade auf dasselbe Problem gestoßen und habe es durch einen Anruf gelöst
grep -rn --exclude="**/foo/**" 'custom'
Antwort2
Verwenden Sie diesen Operator "*variable*"
als Platzhalter für alle Verzeichnisse, die Sie von der Grep-Suche ausschließen möchten.
In Ihrem Fall,
grep -rn --exclude-dir={"*foo*"} 'custom'
schließt Verzeichnisse oder Unterverzeichnisse mit dem Namen „foo“ aus.
grep -rn --exclude-dir={"*foo*","*bar*"} 'custom'
schließt alle Verzeichnisse und Unterverzeichnisse mit den Namen „foo“ und „bar“ aus.