在文件夹路径中递归搜索多个关键字

时间:2015-07-09 18:18:17

标签: bash awk sed grep

我有一个文本文件,每行包含多个关键字,例如

  • 键1
  • 密钥2
  • 密钥3
  • 键4

然后我有一组包含许多文件的子目录。我需要一个linux grep或sed命令等价物,它将在所有子目录中递归搜索所有关键字并为我打印文件名。

我可以find . | xargs grep "key1",但我必须为每个关键字做。我需要一个命令,它可以用于所有Key1,Key2,Key3等。

请帮助解决这个问题。

2 个答案:

答案 0 :(得分:0)

这应该做:

grep -rlf file .

-r用于递归

-l仅打印包含匹配项

的文件的名称

-f从文件中获取模式,每行一个。

答案 1 :(得分:0)

2个关键字的AND模式

find . -type f -exec grep -q word1 {} \; -exec grep -l word2 {} \;

3个关键字的AND模式

find . -type f -exec grep -q word1 {} \; -exec grep -q word2 {} \; -exec grep -l word3 {} \;