获取 'less' 以显示文件名

kas*_*mir 4 less grep arch-linux

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

less * | grep some_var

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

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

Gil*_*il' 7

为什么要管less成任何东西?那把它变成cat. 显而易见的答案是

grep some_var * | less
Run Code Online (Sandbox Code Playgroud)

你会得到表单的输出

filename:this line contains some_var somewhere
Run Code Online (Sandbox Code Playgroud)

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

filename:42:this line contains some_var somewhere
Run Code Online (Sandbox Code Playgroud)

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


j88*_*376 5

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

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

grep -H some_var *
Run Code Online (Sandbox Code Playgroud)

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

filename: some_var blah blah
Run Code Online (Sandbox Code Playgroud)

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

grep -H some_var * | less
Run Code Online (Sandbox Code Playgroud)

通过大量的文件grepping另一项建议是ack还是ack-grep因为它是在Debian系统闻名。它旨在通过忽略二进制文件来相当快速地搜索源树,并且还需要较少的击键来进行类似的搜索。