鉴于此示例文件夹结构:
/文件夹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
您可能能够利用您zsh
的EXTENDED_GLOB
选项(文档)
grep <pattern> **/*.txt
答案4
find . -name '*.txt' -type f -exec grep <pattern> {} \;