使用 grep 和文件模式进行递归文本搜索

And*_*vig 47 search command-line-interface grep

鉴于此示例文件夹结构:

/folder1/file1.txt
/folder1/file2.djd
/folder2/file3.txt
/folder2/file2.fha

如何*.txt使用grep“/”对所有文件进行递归文本搜索?

"grep -r <pattern> *.txt"从“/”运行时失败,因为.txt该文件夹中没有文件。)

Kyl*_*ndt 63

我的 GNU Grep 版本有一个开关:

grep -R --include='*.txt' $Pattern
Run Code Online (Sandbox Code Playgroud)

描述如下:

--include=GLOB
Run Code Online (Sandbox Code Playgroud)

仅搜索基本名称与 GLOB 匹配的文件(使用 --exclude 中所述的通配符匹配)。


Mar*_*ark 20

如果您有大量文件,将 xargs 合并到命令中以避免“参数列表太长”错误会很有用。

find . -name '*.txt' -print | xargs grep <pattern>
Run Code Online (Sandbox Code Playgroud)

  • 如果任何文件或目录名称中有空格,请使用以下形式: find 。-name '*.txt' -print0 | xargs -0 grep &lt;模式&gt; (6认同)
  • 当然还有以`-`开头的文件名问题。 (2认同)