运行递归模式时,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文件模式,依此类推。