exclude-dir
ist grep
versionsabhängig
Die Flagge wurde eingeführt wurde mit> 2.5.2 eingeführt :
+ Version 2.5.2 + - Mit der neuen Option --exclude-dir kann ein Verzeichnismuster angegeben werden + das wird vom rekursiven grep ausgeschlossen.
(H / T zu Johnsywebs Antwort auf SO, um die Version herauszufinden )
Wo implementiert, funktioniert es als normale, durch Kommas getrennte Liste von Verzeichnissen, die ausgeschlossen werden sollen, ohne Leerzeichen:
$ grep 'foo' -ri . ./a/test.txt:foo bar baz ./c/test.txt:foo bar baz ./b/test.txt:foo bar baz $ grep 'foo' --exclude-dir= -ri . ./c/test.txt:foo bar baz
Alternativ, wenn Ihre Version von grep
nicht unterstützt wird {}
und Sie nicht weiterhin Verzeichnisse eingeben müssen
Fügen Sie die Verzeichnisse in ein Array ein und erweitern Sie das in den Befehl:
$ exclude=( "mail" ".cpanel" "tmp" ) $ for dir in $; do echo "--exclude-dir=$dir"; done --exclude-dir=mail --exclude-dir=.cpanel --exclude-dir=tmp
Verwenden Sie wie folgt:
$ grep 'world' $(for dir in $; do echo "--exclude-dir=$dir"; done) -ri .
Erläuterung : Die Ersetzung $()
setzt Ihre --exclude-dir
Argumente als Argumente für grep ein grep
.