使用“grep”匹配多个文件中的文本

使用“grep”匹配多个文件中的文本

我有多个文件中的数据。我想找到一些在所有文件中匹配的文本。我可以使用该grep命令吗?如果是的话怎么办?

答案1

只需在命令行上添加所有文件即可。您可以使用 * 或 ?或您的 shell 允许作为占位符的任何内容。

来自联机帮助页:

grep [OPTIONS] PATTERN [FILE...]

意思是:你想要多少个文件..或者如果你想 grep stdin/pipe 则没有。

答案2

如果您不知道文件的确切位置,但知道它们的名称,您可以使用find

find .  \( -name "filename1" -o -name "filename2" \) -exec grep "<grepstatement>" '{}' \; -print

假设这些文件位于此目录中的某个位置。

答案3

grep 'mydata' *

星号*表示您要在多个文件中搜索。如果要搜索多个目录中的多个文件,可以添加-R递归搜索。

grep 'mydata' * -R

答案4

我最终做到了:

grep -rli 'match_me' -- file1 file2 file3

没有名称的双破折号意味着无法定义更多标志,这似乎是 Debian/Bash 系统上广泛的标准;通常意味着所有剩余参数都是文件路径。尽管是免责声明,但我不知道这是否是预期的语义,或者只是适合我使用的工具的症状。

相关内容