如何在文件中搜索字符串?

时间:2014-08-23 09:24:38

标签: linux bash shell grep

如何使用grep检查所有文件中字符串的可用性?

我尝试在文件中搜索字符串,我只需要一个输出。

问题:我在数组中有很多字符串,每个字符串都必须单独搜索。

我想知道字符串存在于哪个文件中。

感谢您的所有答案!

2 个答案:

答案 0 :(得分:2)

如果变量中有一个字符串:

search="string"

您可以使用grep -l列出包含字符串的所有文件:

grep -lFr "$search" /path/to/search

-F开关意味着搜索模式是固定字符串,而不是正则表达式。 -r开关意味着grep会对路径中的所有文件进行递归搜索。

如果您要搜索的字符串数组:

search=( string1 string2 )

你可以使用这样的循环:

for s in "${search[@]}"; do 
    echo "first file containing $s"
    grep -lFr "$s" . | head -n 1
done

head的使用意味着只打印包含该字符串的第一个文件。

答案 1 :(得分:0)

您的问题主要是因为在您的(现已删除)脚本中使用了

grep -n -w "$name" /tmp/packages-puppy-*
                        ^ - lowercase "p"

在Dropbox中你有一些大写字母“P”的文件名和一些小写的“p”文件名。