如何显示完整path或文件名的grep结果

我需要知道完整的文件path,当我grep

我使用类似命令

 cat *.log | grep somethingtosearch 

现在我需要显示的结果与完整的文件path从匹配的结果被取出的地方。

帮助任何人?

假设你有两个日志文件:

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

cd到C:并使用:

 grep -r somethingtosearch temp/*.log 

它会给你一个列表,如:

 temp/my.log:somethingtosearch temp/alsoMy.log:somethingtosearch1 temp/alsoMy.log:somethingtosearch2 

你有没有尝试使用-l标志?

 grep -l somethingtosearch 

这将只返回找到搜索的路径和文件名,而不是返回匹配的所有行。

使用-r标志进行递归。

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

 cd C:\ grep -r somethingtosearch C:\Users\Ozzesh\temp 

或在Linux上:

 cd / grep -r somethingtosearch ~/temp 

如果你真的拒绝你的文件名过滤(* .log),而你想要recursive (文件不在同一个目录下), findgrep结合是最灵活的方法:

 cd / find ~/temp -iname '*.log' -type f -exec grep somethingtosearch '{}' \; 

为了我
grep -b“searchsomething”* .log以我想要的方式工作

打印完整路径的最简单方法是用绝对路径替换相对的开始路径:

 grep -r --include="*.sh" "pattern" ${PWD} 

命令:

 grep -rl --include="*.js" "searchString" ${PWD} 

返回输出:

 /root/test/bas.js 

使用:

 grep somethingtosearch *.log 

和文件名将被打印出来的比赛。