显示未找到grep的文件?

时间:2017-07-10 23:44:11

标签: bash shell command-line grep

这是我目前的代码:

grep -o -P '(?<=class\=\"name\">).*?(?=<\/div>)' * > ../name.txt

现在,它正在搜索目录中的每个文件,并输出class="name"></div>之间的名称。

但如果在文件中找不到任何内容,则该文件根本不会显示在输出的name.txt文件中。

如果找不到字符串,是否有办法让它仍然显示该文件已被搜索?

例如,现在它的输出如下:

file1.html:Bob
file3.html:Person
file4.html:Other

我希望它输出如下:

file1.html:Bob
file2.html:UNKNOWN
file3.html:Person
file4.html:Other

这可能吗或我遗失了什么?

1 个答案:

答案 0 :(得分:0)

您必须编写一个循环来报告不匹配的文件。

for file in *; do
    grep -h -o -P '(?<=class\=\"name\">).*?(?=<\/div>)' "$file" || echo "$file:UNKNOWN"
done