如何使用grep检查所有文件中字符串的可用性?
我尝试在文件中搜索字符串,我只需要一个输出。
问题:我在数组中有很多字符串,每个字符串都必须单独搜索。
我想知道字符串存在于哪个文件中。
感谢您的所有答案!
答案 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”文件名。