Linux bash:检查目录中的多个文件是否包含列表中的字符串

Linux bash:检查目录中的多个文件是否包含列表中的字符串,linux,string,bash,text,grep,Linux,String,Bash,Text,Grep,各位 我有一个文本文件,其中包含多行,每行一个字符串: str1 str2 str3 等等 我想阅读此文件的每一行,然后在位于不同目录的多个文件中搜索这些字符串 我不太清楚如何进行 非常感谢您的帮助。同时阅读-r str while read -r str do echo "$str" grep "$str" /path/to/other/files done < inputfile 做 回显“$str” grep“$str”/path/to/other/files 完成

各位

我有一个文本文件,其中包含多行,每行一个字符串:

str1
str2
str3
等等

我想阅读此文件的每一行,然后在位于不同目录的多个文件中搜索这些字符串

我不太清楚如何进行

非常感谢您的帮助。

同时阅读-r str
while read -r str
do
   echo "$str"
   grep "$str" /path/to/other/files
done < inputfile
做 回显“$str” grep“$str”/path/to/other/files 完成<输入文件
使用GNU Grep的
--file
选项 根据grep(1):

-H
-n
标志将打印每个匹配的文件名和行号。因此,假设您将模式存储在/tmp/foo中,并希望在/tmp/bar中搜索所有文件,您可以使用以下方法:

# Find regular files with GNU find and grep them all using a pattern
# file.
find /etc -type f -exec grep -Hnf /tmp/foo {} +
以美元表示的wrd的
(cut-d,-f1
您想确定哪些文件(位于另一个目录中)包含这些字符串吗?不确定这是否是最具社区精神的方法,但我对这些内容进行了编辑以澄清问题。不过,我对OP问题的看法可能不正确。布鲁兹,如果我的编辑抓住了你原始问题的意图,我希望没问题。如果没有,我道歉。很抱歉我的问题不够清晰。我要找的是一个命令,它读取模式文件的每一行,然后从$directory中查找每个文件中的字符串,并在有$Filename和$StringMatch值时返回这两个值。谢谢分享,我不知道这个grep选项。这没有返回任何信息,但我想这是因为我的问题一开始还不够清楚。谢谢你的grep提示!:)@Bluz我已经更新了答案以返回文件名和行号,并修复了一个小的语法错误。如果你有GNU grep,它现在应该对你有用了。祝你好运优秀的正是我需要的!而行号是蛋糕上的糖霜。非常感谢:DI用美元为wrd做了一个测试(cut-d,-f1echo的不可移植性,它只能在某些框中的某些shell上工作。这在Linux中应该可以正常工作。OP把Linux作为一个标签提出了他的问题。
# Find regular files with GNU find and grep them all using a pattern
# file.
find /etc -type f -exec grep -Hnf /tmp/foo {} +
for wrd in $(cut -d, -f1 < testfile.txt); do grep $wrd dir/files* ; done
awk 'NR==FNR{a[$0];next} { for (word in a) if ($0 ~ word) print FILENAME, $0 }' fileOfWords /wherever/dir/*