如何使用完整路径或文件名显示grep结果

Özz*_*esh 30 linux

我需要知道完整的文件路径grep.

我使用像这样的命令

cat *.log | grep somethingtosearch
Run Code Online (Sandbox Code Playgroud)

现在我需要用完整的文件路径显示结果,从中取出匹配的结果.

帮助任何人?

dev*_*ull 18

你尝试过用-l旗帜吗?

grep -l somethingtosearch
Run Code Online (Sandbox Code Playgroud)

这将仅返回找到搜索的路径和文件名,而不是返回匹配的整行.

-r标志一起使用以进行递归.

  • grep -l只会给filename不完整的路径 (12认同)

Kaa*_*zia 13

假设您有两个日志文件:

  • C:/temp/my.log
  • C:/temp/alsoMy.log

cd到C:并使用:

grep -r somethingtosearch temp/*.log
Run Code Online (Sandbox Code Playgroud)

它将为您提供如下列表:

temp/my.log:somethingtosearch
temp/alsoMy.log:somethingtosearch1
temp/alsoMy.log:somethingtosearch2
Run Code Online (Sandbox Code Playgroud)


小智 10

命令:

grep -rl --include="*.js" "searchString" ${PWD}
Run Code Online (Sandbox Code Playgroud)

返回的输出:

/root/test/bas.js
Run Code Online (Sandbox Code Playgroud)


sae*_*gnu 5

如果你想看到完整的路径,我会建议到cd顶级目录(如果使用Windows,你的驱动器)

cd C:\
grep -r somethingtosearch C:\Users\Ozzesh\temp
Run Code Online (Sandbox Code Playgroud)

或者在Linux上:

cd /
grep -r somethingtosearch ~/temp
Run Code Online (Sandbox Code Playgroud)

如果你真的抵制你的文件名过滤(*.log)并且你想要recursive(文件不在同一个目录中),那么组合find并且grep是最灵活的方式:

cd /
find ~/temp -iname '*.log' -type f -exec grep somethingtosearch '{}' \;
Run Code Online (Sandbox Code Playgroud)


小智 5

当我完全寻找相同的问题时,我就落在这里,也许它可以帮助其他人。

我认为真正的解决方案是:

cat *.log | grep -H somethingtosearch
Run Code Online (Sandbox Code Playgroud)

  • 要使 -H 显示完整路径,您必须*指定完整路径*作为搜索目录而不是相对路径(在意识到这一点之前我遇到了一些麻烦)。 (3认同)
  • 根据我对问题的理解,这是唯一看起来正确的解决方案。-H将显示所搜索文件的路径。辉煌 (2认同)