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

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

鉴于此示例文件夹结构:

/文件夹1/文件1.txt
/文件夹1/文件2.djd
/文件夹2/文件3.txt
/folder2/file2.fha

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

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

答案1

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

grep -R --include='*.txt' $Pattern

描述如下:

--include=GLOB

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

答案2

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

find . -name '*.txt' -print | xargs grep <pattern>

答案3

您可能能够利用您zshEXTENDED_GLOB选项(文档

grep <pattern> **/*.txt

答案4

find . -name '*.txt' -type f -exec grep <pattern> {} \;

相关内容