Unterverzeichnis ausschließen funktioniert nicht mit dem Grep-Befehl

Unterverzeichnis ausschließen funktioniert nicht mit dem Grep-Befehl

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.

verwandte Informationen