我正在寻找一种方法来列出包含我正在寻找的完整关键字集的目录中的所有文件,位于文件的任何位置。
因此,关键字不需要出现在同一行上。
一种方法是:
grep -l one $(grep -l two $(grep -l three *))
Run Code Online (Sandbox Code Playgroud)
三个关键字只是一个例子,也可以是两个或四个,依此类推。
我能想到的第二种方法是:
grep -l one * | xargs grep -l two | xargs grep -l three
Run Code Online (Sandbox Code Playgroud)
出现在另一个问题中的第三种方法是:
find . -type f \
-exec grep -q one {} \; -a \
-exec grep -q two {} \; -a \
-exec grep -q three {} \; -a -print
Run Code Online (Sandbox Code Playgroud)
但这绝对不是我来这里的方向。我想要的东西,需要更少的输入,可能只需一个电话来grep
,awk
,perl
或类似的。
例如,我喜欢如何awk
让您匹配包含所有关键字的行,例如:
awk '/one/ && /two/ && /three/' …
Run Code Online (Sandbox Code Playgroud)