Recursive Find from Command Line

By  on  

Probably a dozen times a day I need to search any given project for specific code keywords.  Most of the time it's within a specific project but then there are times where I don't remember which directory or project the specific text is -- from my blog to my many Mozilla projects, I have code all over my local machine and it's oftentimes difficult to find something I need.

Most of the time I need to open my text editor and have it do the hard work of what I'm looking for but that's probably not efficient -- a more efficient tool would come from command line and thanks to CommandLineFu.com, I found the perfect command:

# Search all ".js" files for "debounce"
# Spits out file path, line number, and snippet where string appears
find . -name "*.js" -exec grep -in -H "debounce" {} \;

The command above searches files recursively to find the desired string, outputting the source file and the text which the string occurs in!

Recent Features

  • By
    Chris Coyier’s Favorite CodePen Demos

    David asked me if I'd be up for a guest post picking out some of my favorite Pens from CodePen. A daunting task! There are so many! I managed to pick a few though that have blown me away over the past few months. If you...

  • By
    Vibration API

    Many of the new APIs provided to us by browser vendors are more targeted toward the mobile user than the desktop user.  One of those simple APIs the Vibration API.  The Vibration API allows developers to direct the device, using JavaScript, to vibrate in...

Incredible Demos

  • By
    Use Custom Missing Image Graphics Using Dojo

    A few months back I posted an article about how you can use your own "missing image" graphics when an image fails to load using MooTools and jQuery. Here's how to do the same using Dojo. The HTML We'll delegate the image to display by class...

  • By
    Fullscreen API

    As we move toward more true web applications, our JavaScript APIs are doing their best to keep up.  One very simple but useful new JavaScript API is the Fullscreen API.  The Fullscreen API provides a programmatic way to request fullscreen display from the user, and exit...

Discussion

  1. Vladimir

    Recently I’m using:

    grep 'term' -r ./

    I think grep also has an option to filter on file extension too and I use it sometimes, but I don’t know it by heart.

  2. The output on this looks pretty must the same as with the functionality already built into grep using the -r and --include flags. I also tend to add the -n flag to output the line numbers as well. I believe this should line be equivalent.

    grep -rin --include="*.js" "debounce" .
  3. The find trick was one I learned at university in the 1990s, when most greps didn’t have the recursive flag. My vague recollection is that GNU grep introducing -r gave much of the competition a bit of a kick up the arse, and now it’s fairly common, but the find trick is still useful on older or more obscure Unix platforms…

  4. Jeremy

    Pretty sure you have a typo in there. “*.[js]” means “*.j” or “*.s”, which is likely to find nothing.

    • Good point — left some testing in there. Updated!

  5. Check out Ack (http://beyondgrep.com/why-ack/).

    ack debounce
    • Oh, you were filtering for JavaScript files only. That’s as easy as

      ack debounce --type=js

      :-)

  6. Isaiah

    Wasn’t able to execute this through the command line: Err find: missing argument to `-exec'

Wrap your code in <pre class="{language}"></pre> tags, link to a GitHub gist, JSFiddle fiddle, or CodePen pen to embed!