![](https://www.alaica.com/wp-content/uploads/linux-78.png)
我使用 Debian Linux 作为我的开发工作站。我想递归搜索名为 ~/projects/ 的目录,仅查找 *.txt 文件的“foo”单词。如何使用 grep 命令在 ~/projects/ 中的所有文本文件中搜索“foo”单词?
grep命令支持递归文件模式
教程详情 | |
---|---|
难度级别 | 简单的 |
根权限 | 不 |
要求 | grep |
美东时间。阅读时间 | 1分钟 |
选项如下:
grep -R "pattern" /path/to/dir/
要限制对 *.txt 的搜索,请尝试将--include选项传递给 grep 命令
--include选项的语法和示例
语法是:
grep -R --include =GLOB “模式” /路径/到/目录 grep -R --include = “*.txt” “模式” /路径/到/目录 grep -R --include = “*.txt” “foo”〜/项目/
您可以使用通配符匹配来包含基本名称与 GLOB 匹配的文件。文件名 glob 可以使用 *、? 和 […] 作为通配符,并使用 来按字面引用通配符或反斜杠字符。-i您可以使用optoon(即不区分大小写的搜索)忽略 PATTERN 和输入文件中的大小写区别。在以下示例中,在我的 /raid6/projects/sysmanagement/ 目录中搜索“main”一词的所有 *.py、*.pl 和 *.sh 文件:
grep --color -Ri --include = "*.py" --include = "*.sh" --include = "*.pl" "main" / raid6 /项目/ sysmanagement /
或者
grep --color -Ri --include = * . { py,pl, sh } “主” / raid6 /项目/系统管理/
或者更安全的选择是(注意 –color 被删除并 * 替换为 *):
grep -Ri --include = * . { py,pl, sh } “主” / raid6 /项目/系统管理/
该--include选项为您提供以下优势:
- 加快搜索速度。
- 仅匹配给定的文件模式。
- 不要搜索二进制文件,例如编译文件或图像文件。换句话说,仅查找 *.txt 或 *.py 文件模式等。