如何在排除特定目录的同时使用grep进行递归搜索?
背景:我有一个包含日志文件的大目录,我想在搜索中消除这些文件。最简单的方法是移动日志文件夹。不幸的是,我无法做到这一点,因为项目要求地点。
知道该怎么做吗?
答案 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
结果。