如何递归地 grep 目录中每个文件的前 50 行?

zev*_*lag 10 linux unix grep

我需要搜索目录及其子目录中每个文件的前 50 行。

这将完成递归部分,但如何限制每个文件的前 50 行?

grep -r "matching string here" .
Run Code Online (Sandbox Code Playgroud)

其中一些文件很大,我只希望它们在前 50 行中匹配。我试图通过不在某些文件中搜索兆字节的二进制数据来加快该过程。

gni*_*urf 11

评论。

  • 使用sed而不是组合head--可能会稍微容易一些grep
  • 让我强调一下,对于可能包含有趣符号(空格、换行符等)的文件名,所有三种方法都是 100% 安全的。
  • 在其中两种方法中,我假设您有一个相当新的 bash 版本。
  • 您可以-exec ... +在每种方法中使用,但是您必须自己编写内部循环代码!(留给读者的琐碎练习)。如果您有大量文件,这可能会稍微高效一些。