【问题标题】:grep with pattern (i.e., search for mutliple strings/searches/options) -- file type can't be specified?grep with pattern (i.n., search for multiple strings/search/options) -- 无法指定文件类型?
【发布时间】:2022-12-13 09:25:27
【问题描述】:

我想做一个递归的 grep 并在第一时间搜索多个字符串/选项(我认为这可能被称为模式?不确定)。

从语义上讲,我想要搜索“foo | bar”。有多种选择。其中:grep -- "foo\|bar" *.txt 完成了这项工作。

我不能使用该命令,因为我不知道如何告诉它递归搜索。即,“-r”属性不起作用。Q1: 有什么想法吗?

无论如何,我发现以下选项更方便:

grep -r -f patternfile * 因为它允许我将我的匹配项(“foo”和“bar”以及任何其他)放入一个文件(这里称为 patternfile),每行一个。如果搜索许多表达式,这显然更方便和可读。

然而,这也有它的缺点!似乎我必须在这里为正在搜索的内容指定“*”。但当然我想限制它,例如文本文件,*.txt。但这不起作用... *Q2:如何使用这个命令.txt 最后? (为什么它一开始不接受呢?)

【问题讨论】:

    标签: grep


    【解决方案1】:

    你能试试吗:

    grep -r --include="*.txt" "foo|bar" .
    

    如果您的 grep 不支持 --include 选项,这里有一个替代方案:

    find . -type f -name "*.txt" -print0 | xargs -0 grep "foo|bar"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-06
      • 1970-01-01
      • 1970-01-01
      • 2015-03-02
      • 2022-12-02
      • 1970-01-01
      • 1970-01-01
      • 2020-11-25
      相关资源
      最近更新 更多