【问题标题】:How to show grep result with complete path or file name [closed]如何使用完整路径或文件名显示 grep 结果
【发布时间】:2012-12-02 06:14:06
【问题描述】:

grep时需要知道完整的文件路径。

我使用类似的命令

cat *.log | grep somethingtosearch

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

帮助任何人?

【问题讨论】:

    标签: linux bash grep


    【解决方案1】:

    用途:

    grep somethingtosearch *.log
    

    文件名将与匹配项一起打印出来。

    【讨论】:

      【解决方案2】:

      假设您有两个日志文件:

      • 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
      

      【讨论】:

      • 如何获取搜索到的内容的行号?
      • @Özzesh 添加 -n 用于报告行号
      【解决方案3】:

      对我来说

      grep -b "searchsomething" *.log
      

      按我的意愿工作

      【讨论】:

      • 这不是关于你想要什么,而是关于 OP 想要什么。
      【解决方案4】:

      如果你想查看完整路径,我建议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 '{}' \;
      

      【讨论】:

        【解决方案5】:

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

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

        【讨论】:

        • 它打印一个目录两次,一个是绝对路径,一个是相对路径,我可以忽略相对路径吗?
        【解决方案6】:

        命令:

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

        返回的输出:

        /root/test/bas.js
        

        【讨论】:

        • 它打印一个目录两次,一个是绝对路径,一个是相对路径,我可以忽略相对路径吗?
        【解决方案7】:

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

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

        cat *.log | grep -H somethingtosearch
        

        【讨论】:

        • 如果将文件内容通过管道传递给grep,而不是将文件名作为参数传递,grep 无法知道文件名并打印“(标准输入)”。
        • 根据我对问题的理解,这是唯一似乎正确的解决方案。 -H 将显示搜索到的文件的路径。辉煌
        • 要让 -H 显示完整路径,您必须指定完整路径作为搜索目录而不是相对路径(在我意识到这一点之前我遇到了一些麻烦)。
        【解决方案8】:

        类似于BVB Media的回答。

        grep -rnw 'blablabla' `pwd`
        

        它在我的 ubuntu bash 上运行良好。

        【讨论】:

        • 它打印一个目录两次,一个是绝对路径,一个是相对路径,我可以忽略相对路径吗?
        • @Wasima。它只打印绝对路径,而不是我的 bash 上的相对路径。你有不同的环境吗?我正在使用 ubuntu 16.04 lts。
        猜你喜欢
        • 1970-01-01
        • 2021-09-11
        • 2015-01-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-30
        • 1970-01-01
        相关资源
        最近更新 更多