如何递归 grep 所有目录和子目录?

新手上路,请多包涵

如何递归 grep 所有目录和子目录?

 find . | xargs grep "texthere" *

原文由 wpiri 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 848
2 个回答
grep -r "texthere" .

第一个参数代表要搜索的正则表达式,而第二个参数代表应该搜索的目录。在这种情况下, . 表示当前目录。

注意:这适用于 GNU grep,并且在 Solaris 等某些平台上,您必须专门使用 GNU grep 而不是传统实现。对于 Solaris,这是 ggrep 命令。

原文由 Vinko Vrsalovic 发布,翻译遵循 CC BY-SA 3.0 许可协议

如果您知道所需文件的扩展名或模式,另一种方法是使用 --include 选项:

 grep -r --include "*.txt" texthere .

您还可以使用 --exclude 提及要排除的文件。

如果您经常搜索代码, Ag (The Silver Searcher) 是一个比 grep 更快的替代方法,它是为搜索代码而定制的。例如,默认情况下它是递归的,并自动忽略 .gitignore 中列出的文件和目录,因此您不必一直将相同的繁琐排除选项传递给 grep 或 find。

原文由 christangrant 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题