获取“less”来显示文件名

获取“less”来显示文件名

当我在一堆配置文件中查找某个 var 时,这对我来说似乎非常有用:

less * | grep some_var

因此,这将返回 的值,而some_var无需手动查看所有配置文件。好的!但是如果我不仅想知道它的价值some_var而且想改变它怎么办?它在什么文件中?如何获取less命令(或grep或其他命令)来显示 var 以及在哪个文件中找到它?

我搜索了手册页,但找不到任何合适的选项......

答案1

为什么要通过管道less插入任何东西?这会将其变成cat.显而易见的答案是

grep some_var * | less

您将得到表单的输出

filename:this line contains some_var somewhere

如果将选项传递-ngrep,您还会获得行号:

filename:42:this line contains some_var somewhere

许多编辑器内置某种形式的文件搜索,搜索结果显示在窗口中,您可以在其中选择一行以在相应位置打开相应文件。在 Emacs 中,运行M-x grep或其变体之一。在 Vim 中,运行:grep或其变体之一。

答案2

less并不是真正为了做你想做的事;它用于以分页格式显示长文本文件。

grep允许将文件或文件列表作为命令行参数传递,因此您可以简单地执行以下操作

grep -H some_var *

这将为您提供如下所示的输出,因为该-H选项将名称作为结果的前缀:

filename: some_var blah blah

如果您仍然想将其通过管道传输less以便可以滚动浏览它,您可以这样做。

grep -H some_var * | less

另一个关于 grep 大量文件的建议是ackDebianack-grep系统上的。它旨在通过忽略二进制文件来相当快速地搜索源树,并且还需要更少的击键来执行类似的搜索。

相关内容