我有多个文件中的数据。我想找到一些在所有文件中匹配的文本。我可以使用该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 系统上广泛的标准;通常意味着所有剩余参数都是文件路径。尽管是免责声明,但我不知道这是否是预期的语义,或者只是适合我使用的工具的症状。