当我使用grep
时,如何获取完整的文件路径?
我使用类似以下的命令:
cat *.log | grep somethingtosearch
我需要展示匹配结果的完整文件路径,以显示从哪里提取出该结果。
我该如何做?
假设您有两个日志文件在:
进入C:并使用以下命令:
grep -r somethingtosearch temp/*.log
它会给您一个类似以下的列表:
temp/my.log:somethingtosearch
temp/alsoMy.log:somethingtosearch1
temp/alsoMy.log:somethingtosearch2
我认为真正的解决方案是:
cat *.log | grep -H somethingtosearch
grep
而不是作为参数传递文件名,则 grep
无法知道文件名并打印"(standard input)"。 - EndlosSchleife命令:
grep -rl --include="*.js" "searchString" ${PWD}
返回的输出:
/root/test/bas.js
如果您想查看完整路径,我建议您cd
到顶级目录(如果使用Windows,则为驱动器的根目录)
cd C:\
grep -r somethingtosearch C:\Users\Ozzesh\temp
或在Linux上:
cd /
grep -r somethingtosearch ~/temp
如果您坚持使用文件名过滤器(*.log),并且需要进行递归操作(文件不都位于同一目录),那么结合使用find
和grep
是最灵活的方式:
cd /
find ~/temp -iname '*.log' -type f -exec grep somethingtosearch '{}' \;
对我来说
grep -b "searchsomething" *.log
按照我的要求工作了
输出完整路径最简单的方法是将相对起始路径替换为绝对路径:
grep -r --include="*.sh" "pattern" ${PWD}
使用:
grep somethingtosearch *.log
文件名将与匹配项一起打印出来。
man grep
)使用:-c, --count 抑制正常输出;而是为每个输入文件打印匹配行的计数。使用-v,--invert-match选项(见下文),计算不匹配的行数。
- undefined