鉴于这个例子文件夹结构:
/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>
你也许可以使用你的zsh
的EXTENDED_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的设施。