显示grep匹配的文件名

时间:2015-08-22 02:08:09

标签: linux grep

我使用cat来显示文件文件的内容,使用grep显示字符串,例如cat log/* | grep 'error',并想知道是否有选项显示哪个文件名匹配"错误"在文件夹日志下?我上面使用的当前命令仅显示匹配的行。

使用Linux。

提前谢谢, 林

1 个答案:

答案 0 :(得分:2)

grep本身接收文件参数。所以

grep 'error' log/*

会起作用。

另外,着色和行号最好显示:

grep -n --color 'error' log/*

使用起来很常见,您可以在.bashrc文件中添加以下内容:

alias grep='grep -n --color'

但它在脚本中不起作用,因此请确保您了解alias实际上是什么。

更新

似乎我误解了你的问题。实际上你想要的是这个:

ls log/*error*

我不知道你尝试做什么,但如果你试图使用ls返回的名字,这是一件错误的事情。这取决于您的语言,在bash中,您应该使用globbing循环文件名:

for file in log/*error*; do
    do-your-stuff $file
done

在其他语言中,您应该拥有更好的工具,而不是调用额外的流程。

关于为什么ls不好:http://mywiki.wooledge.org/ParsingLs