在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} #多个目录,
#注意:大括号内,目录名用','分隔,目录名之间不能有空隔