grep 排除目录搜索

grep的–exclude-dir=参数就是为了排除某个目录的,即不包含等号后面的目录,所以我们可以利用此参数去掉.svn的隐藏目录。

–exclude-dir=参数的用法如下:

例如:查找当前目录以及子目录下所有包含"test"字符串的代码并打印行号

grep -nr --exclude-dir=“.svn” test *

或者

grep -nr --exclude-dir=.svn test *

–exclude-dir=后面要排除的目录用双引号括起来或者直接接目录名都可以,但是特殊字符必须用转义符表示,例如".svn"中的"."。

如果每次都输入–exclude-dir=参数,是不是很慢还容易出错,降低效率呢?

不过不用担心,我们可以把–exclude-dir=参数通过加入配置文件 ~/.bashrc (这是bash的当前用户配置文件) 的方法来简化操作,提高效率。

在~/.bashrc文件的末尾添加以下命令:
Java代码 收藏代码
export GREP_OPTIONS=“–exclude-dir=.svn”

然后保存,执行source ~/.bashrc或者. ~/.bashrc,使修改起作用。

grep 排除多个文件与目录

如果要排除多个目录,请将排除的目录括在大括号中,并用逗号分隔,不要有空格。

在使用通配符匹配时,您可以使用grep命令–exclude选项并指定的GLOB来排除不需要结果。

例如命令grep -rl --exclude=*.{png,jpg} myfreax *将会在当前工作目录搜索包含字符串myfreax的文件,但不包括以.png和.jpg目录结尾的文件。

命令grep -r --exclude-dir={proc,boot,sys} gnu /在你的Linux系统的根目录/ 开始搜索包含字符串GNU的文件,并且排除proc,boot和sys目录

grep -rl --exclude=*.{png,jpg} myfreax *

grep -r --exclude-dir={proc,boot,sys} gnu /

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐