如何使用grep在递归搜索中排除目录?

时间:2011-11-18 15:13:12

标签: regex grep

如何在排除特定目录的同时使用grep进行递归搜索?

背景:我有一个包含日志文件的大目录,我想在搜索中消除这些文件。最简单的方法是移动日志文件夹。不幸的是,我无法做到这一点,因为项目要求地点。

知道该怎么做吗?

2 个答案:

答案 0 :(得分:16)

你正在寻找这个吗?

来自grep man page:

--exclude-dir=DIR
            Exclude directories matching the pattern DIR from recursive searches.

答案 1 :(得分:0)

作为替代方案,如果您可以在搜索中使用find,那么它也可能有用:

find [directory] -name "*.log" -prune -o -type f -print|grep ...
如果您愿意,[directory]实际上可以是当前目录(只需.即可)。

下一部分-name "*.log" -prune全部在一起。它会搜索模式为*.log的文件名,并将其删除结果。

接下来是-o(代表“或”)

然后,-type f -print说“打印(以stdout)任何类型的文件。”

这些结果应包括[directory]中找到的每个文件(不返回任何目录),但以.log结尾的文件除外。然后,您可以根据需要grep结果。