ripgrep path pattern












0















I'd like ripgrep to search paths with the specified pattern. For e.g.



rg PATTERN --path REGEX


where PATTERN is the pattern to grep and REGEX is the path matching pattern.



I have scattered through the documentation and I am unsure if this functionality is baked in.










share|improve this question























  • Lets be clear this is solvable using rg -l PATTERN | grep -E REGEX but I'd prefer to be more efficient and search only in files that match the pattern.

    – p0lAris
    Feb 26 at 16:42


















0















I'd like ripgrep to search paths with the specified pattern. For e.g.



rg PATTERN --path REGEX


where PATTERN is the pattern to grep and REGEX is the path matching pattern.



I have scattered through the documentation and I am unsure if this functionality is baked in.










share|improve this question























  • Lets be clear this is solvable using rg -l PATTERN | grep -E REGEX but I'd prefer to be more efficient and search only in files that match the pattern.

    – p0lAris
    Feb 26 at 16:42
















0












0








0








I'd like ripgrep to search paths with the specified pattern. For e.g.



rg PATTERN --path REGEX


where PATTERN is the pattern to grep and REGEX is the path matching pattern.



I have scattered through the documentation and I am unsure if this functionality is baked in.










share|improve this question














I'd like ripgrep to search paths with the specified pattern. For e.g.



rg PATTERN --path REGEX


where PATTERN is the pattern to grep and REGEX is the path matching pattern.



I have scattered through the documentation and I am unsure if this functionality is baked in.







ripgrep






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Feb 26 at 16:41









p0lArisp0lAris

1011




1011













  • Lets be clear this is solvable using rg -l PATTERN | grep -E REGEX but I'd prefer to be more efficient and search only in files that match the pattern.

    – p0lAris
    Feb 26 at 16:42





















  • Lets be clear this is solvable using rg -l PATTERN | grep -E REGEX but I'd prefer to be more efficient and search only in files that match the pattern.

    – p0lAris
    Feb 26 at 16:42



















Lets be clear this is solvable using rg -l PATTERN | grep -E REGEX but I'd prefer to be more efficient and search only in files that match the pattern.

– p0lAris
Feb 26 at 16:42







Lets be clear this is solvable using rg -l PATTERN | grep -E REGEX but I'd prefer to be more efficient and search only in files that match the pattern.

– p0lAris
Feb 26 at 16:42












1 Answer
1






active

oldest

votes


















0














Use the -g/--glob flag, as documented in the guide. It uses globbing instead of regexes, but accomplishes the same thing in practice. For example:



rg PM_RESUME -g '*.h'


finds occurrences of PM_RESUME only in C header files in my checkout of the Linux kernel.



ripgrep provides no way to use a regex to match file paths. Instead, you should use xargs if you absolutely need to use a regex:



rg --files -0 | rg '.*.h$' --null-data | xargs -0 rg PM_RESUME


Breaking it down:





  • rg --files -0 prints all of the files it would search, on stdout, delimited by NUL.


  • rg '.*.h$' --null-data only matches lines from the file list that end with .h. --null-data ensures that we retain our NUL bytes.


  • xargs -0 rg PM_RESUME splits the arguments that are NUL delimited, and hands them to ripgrep, which precisely corresponds to the list of files matching your initial regex.


Handling NUL bytes is necessary for full correctness. If you don't have whitespace in your file paths, then the command is simpler:



rg --files | rg '.*.h$' | xargs rg PM_RESUME





share|improve this answer























    Your Answer








    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "106"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: false,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: null,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f503161%2fripgrep-path-pattern%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    0














    Use the -g/--glob flag, as documented in the guide. It uses globbing instead of regexes, but accomplishes the same thing in practice. For example:



    rg PM_RESUME -g '*.h'


    finds occurrences of PM_RESUME only in C header files in my checkout of the Linux kernel.



    ripgrep provides no way to use a regex to match file paths. Instead, you should use xargs if you absolutely need to use a regex:



    rg --files -0 | rg '.*.h$' --null-data | xargs -0 rg PM_RESUME


    Breaking it down:





    • rg --files -0 prints all of the files it would search, on stdout, delimited by NUL.


    • rg '.*.h$' --null-data only matches lines from the file list that end with .h. --null-data ensures that we retain our NUL bytes.


    • xargs -0 rg PM_RESUME splits the arguments that are NUL delimited, and hands them to ripgrep, which precisely corresponds to the list of files matching your initial regex.


    Handling NUL bytes is necessary for full correctness. If you don't have whitespace in your file paths, then the command is simpler:



    rg --files | rg '.*.h$' | xargs rg PM_RESUME





    share|improve this answer




























      0














      Use the -g/--glob flag, as documented in the guide. It uses globbing instead of regexes, but accomplishes the same thing in practice. For example:



      rg PM_RESUME -g '*.h'


      finds occurrences of PM_RESUME only in C header files in my checkout of the Linux kernel.



      ripgrep provides no way to use a regex to match file paths. Instead, you should use xargs if you absolutely need to use a regex:



      rg --files -0 | rg '.*.h$' --null-data | xargs -0 rg PM_RESUME


      Breaking it down:





      • rg --files -0 prints all of the files it would search, on stdout, delimited by NUL.


      • rg '.*.h$' --null-data only matches lines from the file list that end with .h. --null-data ensures that we retain our NUL bytes.


      • xargs -0 rg PM_RESUME splits the arguments that are NUL delimited, and hands them to ripgrep, which precisely corresponds to the list of files matching your initial regex.


      Handling NUL bytes is necessary for full correctness. If you don't have whitespace in your file paths, then the command is simpler:



      rg --files | rg '.*.h$' | xargs rg PM_RESUME





      share|improve this answer


























        0












        0








        0







        Use the -g/--glob flag, as documented in the guide. It uses globbing instead of regexes, but accomplishes the same thing in practice. For example:



        rg PM_RESUME -g '*.h'


        finds occurrences of PM_RESUME only in C header files in my checkout of the Linux kernel.



        ripgrep provides no way to use a regex to match file paths. Instead, you should use xargs if you absolutely need to use a regex:



        rg --files -0 | rg '.*.h$' --null-data | xargs -0 rg PM_RESUME


        Breaking it down:





        • rg --files -0 prints all of the files it would search, on stdout, delimited by NUL.


        • rg '.*.h$' --null-data only matches lines from the file list that end with .h. --null-data ensures that we retain our NUL bytes.


        • xargs -0 rg PM_RESUME splits the arguments that are NUL delimited, and hands them to ripgrep, which precisely corresponds to the list of files matching your initial regex.


        Handling NUL bytes is necessary for full correctness. If you don't have whitespace in your file paths, then the command is simpler:



        rg --files | rg '.*.h$' | xargs rg PM_RESUME





        share|improve this answer













        Use the -g/--glob flag, as documented in the guide. It uses globbing instead of regexes, but accomplishes the same thing in practice. For example:



        rg PM_RESUME -g '*.h'


        finds occurrences of PM_RESUME only in C header files in my checkout of the Linux kernel.



        ripgrep provides no way to use a regex to match file paths. Instead, you should use xargs if you absolutely need to use a regex:



        rg --files -0 | rg '.*.h$' --null-data | xargs -0 rg PM_RESUME


        Breaking it down:





        • rg --files -0 prints all of the files it would search, on stdout, delimited by NUL.


        • rg '.*.h$' --null-data only matches lines from the file list that end with .h. --null-data ensures that we retain our NUL bytes.


        • xargs -0 rg PM_RESUME splits the arguments that are NUL delimited, and hands them to ripgrep, which precisely corresponds to the list of files matching your initial regex.


        Handling NUL bytes is necessary for full correctness. If you don't have whitespace in your file paths, then the command is simpler:



        rg --files | rg '.*.h$' | xargs rg PM_RESUME






        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Feb 26 at 17:29









        BurntSushi5BurntSushi5

        1262




        1262






























            draft saved

            draft discarded




















































            Thanks for contributing an answer to Unix & Linux Stack Exchange!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f503161%2fripgrep-path-pattern%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            How to make a Squid Proxy server?

            Is this a new Fibonacci Identity?

            Touch on Surface Book