这对我有用,因为它从搜索的根目录中排除了“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”的目录和子目录。