使用grep和文件模式进行recursion文本search

鉴于这个例子文件夹结构:

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

如何使用grep从“/”对所有*.txt文件进行recursion文本search

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

我的GNU Grep版本有这样的开关:

 grep -R foo --include '*.txt' * 

描述如下:

 --include=GLOB 

只search基本名称与GLOB匹配的文件(使用通配符匹配,如–exclude下所述)。

如果你有大量的文件,将xargsjoin命令会避免“参数列表太长”的错误。

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

你也许可以使用你的zshEXTENDED_GLOB选项( docs )

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

Mannis答案会为每个文本文件分叉一个新的grep进程。 如果你有很多的文本文件,你可以考虑先擦掉每个文件,然后在完成时select.txt文件。

 grep -r <pattern> * | grep \.txt: 

这是更多的磁盘密集型,但可能会更快。

你可能想看看http://betterthangrep.com ,它有select文件来search文件types的设施。