
У меня это работает, поскольку исключает каталог «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».