grep - 限制读取的文件数

oab*_*rca 8 linux bash grep

我有一个超过100,000个文件的目录.我想知道字符串是否"str1"作为任何这些文件的内容的一部分存在.

命令: grep -l 'str1' *读取所有文件时耗时太长.

grep如果发现匹配,我怎么能要求停止阅读任何其他文件?任何一个班轮?

注意:我尝试过,grep -l 'str1' * | head但命令所需的时间与前一个一样多.

Bil*_*win 6

在命令args中命名100,000个文件名会导致问题.它可能超过了shell命令行的大小.

但是,如果使用递归选项仅包含文件所在目录的名称(.如果要搜索当前目录中的文件),则不必命名所有文件:

grep -l -r 'str1' . | head -1
Run Code Online (Sandbox Code Playgroud)

  • @bishop,我没有包含`-m 1`,因为它是多余的,因为`-l`在找到第一个匹配后停止读取文件. (4认同)
  • @gniourf_gniourf,OP的问题被标记为[tag:linux]所以我认为假设他们使用GNU grep是安全的. (2认同)
  • @ user2070775:这就是Bill说使用`grep -r`而不是glob的原因(这就是我建议在评论中使用`find`的原因). (2认同)