排除子目录无法使用 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”的目录和子目录。

相关内容