运行递归模式时,Grep仅包含* .txt文件模式
时间:2020-01-09 10:45:59 来源:igfitidea点击:
Debian Linux中如何递归地搜索名为~/projects /的目录,以仅查找包含foo单词的* .txt文件。
如何使用grep命令在~/projects /中的所有文本文件中搜索foo单词?
grep命令支持递归文件模式,选项如下:
grep -R "pattern" /path/to/dir/
要限制对* .txt的搜索,请尝试将--include
选项传递给grep命令
--include选项的语法和示例
语法为:
grep -R --include=GLOB "pattern" /path/to/dir grep -R --include="*.txt" "pattern" /path/to/dir grep -R --include="*.txt" "foo" ~/projects/
您可以使用通配符匹配包含基本名称与GLOB匹配的文件。
文件名glob可以使用* 、?和[]作为通配符,而\可以在字面上引用通配符或者反斜杠字符。
您可以使用-i optoon来忽略PATTERN和输入文件中的大小写区别,即不区分大小写的搜索。
在下面的示例中,在我的/raid6/projects/sysmanagement /目录中搜索所有* .py,*。
pl和* .sh文件作为主要单词:
grep --color -Ri --include="*.py" --include="*.sh" --include="*.pl" "main" /raid6/projects/sysmanagement/
或者
grep --color -Ri --include=*.{py,pl,sh} "main" /raid6/projects/sysmanagement/
或者更安全的选择是(注意颜色已删除,并且*替换为\ *):
grep -Ri --include=\*.{py,pl,sh} "main" /raid6/projects/sysmanagement/
--include选项为您提供以下优点:
- 加快搜索速度。
- 仅匹配给定的文件模式。
- 请勿搜索二进制文件,例如编译文件或者镜像文件。换句话说,仅查找* .txt或者* .py文件模式,依此类推。