Search for a string in multiple files

There are times you need to search for a particular string or pattern in multiple text files. This is when grep proves to be a really handy tool. Type:

# grep -rsniH search_term *

The options mean:

r - be recursive
s - suppress any error messages
n - print the line number
i - do a case insensitve search
H - print the filename

Here are some examples:

# grep -rsniH "hello" *
# egrep -rsniH "^the.*http:" *

The first searches all text files for the word “hello“. The second one searches for lines that begin with “the” and also contain “http:“.
You should check the grep man page for more info.

Search for a string in multiple files by George Notaras is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
Copyright © 2005 - Some Rights Reserved

George Notaras avatar

About George Notaras

George Notaras is the editor of the G-Loaded Journal, a technical blog about Free and Open-Source Software. George, among other things, is an enthusiast self-taught GNU/Linux system administrator. He has created this web site to share the IT knowledge and experience he has gained over the years with other people. George primarily uses CentOS and Fedora. He has also developed some open-source software projects in his spare time.

2 responses on “Search for a string in multiple files

  1. Dotan Permalink →

    Nice tip – like it.
    however, when trying to detect strings in a C project, I do not want to search the object files:

    $> find . -name “*.c” | xargs grep expression

  2. George Notaras Post authorPermalink →

    The same functionality can be achieved with:

    # grep -rsniH <expression> *.c

    But the use of "find|xargs" is an excellent addition!
    Thanks for your feedback.