【问题标题】:Using "grep" to search for specific type of files in all subdirectories使用“grep”在所有子目录中搜索特定类型的文件
【发布时间】:2019-08-20 14:21:17
【问题描述】:

我试图在包含大量子目录的目录中找到包含“Mutual_Values_23.0”的文件中的特定行。我知道这个行号存储在一个以“gnuout_mutual_....txt”开头的文件中(文件名的省略号部分是时间戳,因此会有所不同)。

我想知道是否有办法指定“grep”命令只查看以“gnuout_mutual_....txt”开头的文件的子目录

我试过了

grep -r "Mutual_Values_23.0" * 

但这需要很长时间

【问题讨论】:

    标签: linux grep


    【解决方案1】:

    你可以使用以下grep选项:

     --include=GLOB
     Search only files whose base name matches GLOB (using wildcard matching as described under --exclude).
    

    对于行号,您应该使用-n 选项。 从您要查看的文件夹的根目录中,您可以使用以下最终命令:

    grep -nr "Mutual_Values_23.0" --include="gnuout_mutual_*txt"
    

    【讨论】:

      【解决方案2】:

      使用find 在所有子目录中搜索带有搜索字符串“Mutual_Values_23.0”的“gnuout...txt` 文件”

      find . -mindepth 1 -name gnuout_mutual_\*.txt -type f -exec grep "Mutual_Values_23.0" {} +
      

      【讨论】:

        【解决方案3】:

        如果你使用,你可以使用globstar选项:

        globstar 如果设置,则在路径名扩展上下文中使用的模式 ** 将 匹配所有文件和零个或多个目录和子目录。 如果模式后跟/,则只有目录和 子目录匹配。

        所以你可以像这样使用它:

        $ shopt -s globstar
        $ grep "search_string" **/glob-pattern
        

        或者在 OP 的情况下:

        $ shopt -s globstar
        $ grep Mutual_Values_23.0 **/gnuout_mutual_*.txt
        

        【讨论】:

          【解决方案4】:

          GNU grep 具有--include GLOB 选项,其中GLOB 可用于指定您需要匹配的文件名模式。

          grep -rn --include 'gnuout_mutual_*txt' 'Mutual_Values_23.0' .
          

          【讨论】:

            【解决方案5】:

            您可以使用 find 搜索文件并将结果传递给 grep。

            find /directory_where_to_search/ -iname 'gnuout_mutual_*.txt' | xargs grep 'Mutual_Values_23.0' -sl
            

            【讨论】:

              【解决方案6】:

              使用这个命令:

              $ find . -name "*Mutual_Values_23.0*"

              注意:在要搜索文件集的目录中运行此命令。

              希望对你有帮助,干杯!

              【讨论】:

                猜你喜欢
                • 2020-10-22
                • 2011-05-15
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2020-12-08
                相关资源
                最近更新 更多