在Linux/Unix下严重依赖grep来检索、查找某字符串,"grep -nrw *"几乎成了肌肉记忆,^_^
但在目录或者子目录里包含了二进制文件,尤其时巨大(>GB)的文件时,grep会非常耗时,需要从检索的目标文件里排除掉,通常有以下2种情形:
- 排除一个或者多个文件:
#排除文件名符合某种模式(Pattern)的文件
grep -nrw network_train ./ --exclude=filename
grep -nrw network_train ./ --exclude=*.py
grep -nrw network_train ./ --exclude=*.{py,md,txt}
#排除某一批文件
grep -nrw network_train ./ --exclude-from filelist.txt
注意:参数是记录文件名列表的文件,即将所有需要排除文件的文件名定义在<filelist.txt>文件里。
- 排除一个或者多个目录:
grep -nrw network_train ./ --exclude-dir=venv #一个目录
grep -nrw network_train ./ --exclude-dir={venv,setup,logs} #多个目录,
#注意:大括号内,目录名用','分隔,目录名之间不能有空隔
在Linux/Unix环境中,grep是常用的文本检索工具,但当处理包含二进制大文件的目录时,搜索会变得效率低下。文章介绍了如何通过`--exclude`和`--exclude-dir`参数排除特定文件或目录,提高grep的搜索性能,例如排除指定文件名模式、多个文件或整个目录,以及使用文件列表进行排除操作。
972

被折叠的 条评论
为什么被折叠?



