Исключить подкаталог не работает с командой grep

Исключить подкаталог не работает с командой grep

У меня это работает, поскольку исключает каталог «foo» из корневого каталога поиска:

grep -rn --exclude-dir=foo 'custom'

Однако это не работает:

grep -rn --exclude-dir=foo/bar 'custom'

Но каталог "foo/bar" все еще ищется. Я также пробовал с кавычками:

grep -rn --exclude-dir='foo/bar' 'custom'

Я использую Ubuntu 20.

Обновлять

Хотя это и не идеально, я воспользовался следующим обходным решением:

grep -rn 'custom'|grep -v 'foo/bar'

Это не позволит найти строки, содержащие одновременно «foo/bar» и «custom».

решение1

Я только что столкнулся с той же проблемой, решил ее, позвонив

grep -rn --exclude="**/foo/**" 'custom'

решение2

Используйте этот оператор "*variable*"в качестве подстановочного знака для любого каталога, который вы хотите исключить из поиска grep.

В твоем случае,

grep -rn --exclude-dir={"*foo*"} 'custom'исключит каталог или подкаталог с именем «foo».

grep -rn --exclude-dir={"*foo*","*bar*"} 'custom'исключит все каталоги и подкаталоги с именами «foo» и «bar».

Связанный контент