给定此示例文件夹结构:
/folder1/file1.txt /folder1/file2.djd /folder2/file3.txt /folder2/file2.fha
如何*.txt
使用grep
“ /”中的所有文件进行递归文本搜索?
("grep -r <pattern> *.txt"
从“ /”运行时失败,因为.txt
该文件夹中没有文件。)
给定此示例文件夹结构:
/folder1/file1.txt /folder1/file2.djd /folder2/file3.txt /folder2/file2.fha
如何*.txt
使用grep
“ /”中的所有文件进行递归文本搜索?
("grep -r <pattern> *.txt"
从“ /”运行时失败,因为.txt
该文件夹中没有文件。)
Answers:
我的GNU Grep版本对此有一个切换:
grep -R --include='*.txt' $Pattern
描述如下:
--include=GLOB
仅搜索基本名称与GLOB匹配的文件(使用--exclude中所述的通配符匹配)。
如果您有大量文件,则将xargs合并到命令中很有用,以避免出现“参数列表过长”错误。
find . -name '*.txt' -print | xargs grep <pattern>
-
。
grep
的速度更快find
。
您可能想看看http://betterthangrep.com上的ack ,它具有用于选择要按文件类型搜索的文件的功能。
find . -name '*.txt' -type f -exec grep <pattern> {} \;