exclude-dir
это grep
зависит от версии
Флаг был введен был введен с> 2.5.2 :
+ Версия 2.5.2 + - Новая опция --exclude-dir позволяет указать шаблон каталога + это будет исключено (так) из рекурсивного grep.
(H / T к ответу Johnsyweb на SO для отслеживания версии )
Где реализовано, это работает как обычный, разделенный запятыми список каталогов для исключения, без пробелов:
$ 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
Альтернатива, если ваша версия grep
не поддерживает {}
и вы не хотите печатать каталоги
Поместите каталоги в массив и разверните его в команду:
$ exclude=( "mail" ".cpanel" "tmp" ) $ for dir in $; do echo "--exclude-dir=$dir"; done --exclude-dir=mail --exclude-dir=.cpanel --exclude-dir=tmp
Используйте как ниже:
$ grep 'world' $(for dir in $; do echo "--exclude-dir=$dir"; done) -ri .
Объяснение : подстановка $()
поместит ваши --exclude-dir
s в качестве аргументов для grep grep
.