鉴于此示例文件夹结构:
/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
文件。)
我的 GNU Grep 版本对此有一个开关:
描述如下:
如果您有大量文件,将 xargs 合并到命令中以避免“参数列表太长”错误会很有用。
您也许可以使用您
zsh
的EXTENDED_GLOB
选项(文档)您可能想查看http://betterthangrep.com上的 ack ,它具有选择要按文件类型搜索的文件的功能。
Mannis 的回答会为每个文本文件派生一个新的 grep 进程。如果那里有很多文本文件,则可以考虑先对每个文件进行 grepping,然后在完成后选择 .txt 文件:
那是磁盘密集型的,但无论如何可能会更快。
现在是 2019 年,我不可能仍然使用 grep 进行递归文本搜索。
恕我直言,今天的答案应包括ripgrep: