Home Linux CommandsHow To Search Inside Files In Linux Using Grep, Find And Ripgrep

How To Search Inside Files In Linux Using Grep, Find And Ripgrep

By sk
6K views 4 mins read

When working on Linux, you often need to search for text inside files. Whether you're debugging configuration files, searching logs for errors, or exploring a large codebase, knowing the right commands can save you hours of work.

In this guide, I’ll show you how to search inside files using grep, find, and ripgrep with practical examples.

We'll start with simple commands and gradually move to more advanced techniques.

1. Why You Need to Search Inside Files

Linux systems often have thousands of files. Manually opening each one is slow and inefficient. Here are common scenarios where searching inside files is useful:

  • Debugging configurations: Find where a setting is defined.
  • Searching logs: Quickly locate errors and warnings.
  • Hunting secrets: Check if passwords, tokens, or API keys are stored.
  • Exploring codebases: Identify where a function or variable is used.

2. Using grep to Search Inside Files

The grep command is one of the most powerful and widely used tools for searching inside files in Linux. Let's start with practical examples.

2.1. Search Recursively and List Matching Files

To search for the text "password" recursively in the current working directory and display the matching files, run:

grep -rl "password" .

Explanation:

  • -r - searches recursively inside all subfolders
  • -l - prints only the file names
  • . - represents the current directory

You can also specify a target path explicitly. For example, to find files containing db_name inside /home/user/, you would run:

grep -rl "db_name" /home/user/mydatabase

2.2. Show Matching Lines and Line Numbers

grep -rn "db_name" /home/user/

Flags used:

  • -n - displays the line number where the match occurs

Example Output:

/home/user/app.conf:45:db_name=my_database
/home/user/test.conf:12:db_name=test_db

2.3. Perform a Case-Insensitive Search

grep -ril "error" /var/log/

Flag added:

  • -i - ignores case differences, so Error, error, and ERROR all match.

2.4. Search Only Specific File Types

You can use --include flag to limit searches. Here's an example:

grep -r --include="*.conf" "db_name" /etc/

Flag used:

  • --include="*.conf" - limit search to .conf files only.

2.5. Exclude Specific Directories or Files

grep -rl --exclude-dir="node_modules" "API_KEY" .

This skips node_modules when searching, making it faster.

Related Read: How To Use Linux Grep Command With Context Flags

3. Using find with grep for Advanced Searches

The find command is useful when you want more control over which files get searched. Combining it with grep gives you advanced filtering options.

3.1. Search Only .conf Files

find /etc -name "*.conf" -exec grep -l "db_name" {} \;

Explanation:

  • find /etc - search inside /etc
  • -name "*.conf" - limit results to .conf files
  • -exec grep -l "db_name" {} \; - run grep on each matching file

If you want to get the clean list of files you're looking for without the distracting warning, you can use this command:

find /etc -name "*.conf" -exec grep -l "db_name" {} + 2>/dev/null

3.2. Exclude Folders While Searching

find . -type f ! -path "./cache/*" -exec grep -l "token" {} \;

This skips the cache folder entirely.

Recommended Read - Fd: The Find Command Alternative For Mastering File Search In Linux

4. Using ripgrep (rg) for Faster Searches

If you work on huge projects or massive codebases, try ripgrep (rg). It's faster than grep and respects .gitignore rules by default.

4.1. Install ripgrep

For Debian / Ubuntu / Linux Mint / Pop!_OS:

sudo apt install ripgrep

For Fedora / RHEL / AlmaLinux / Rocky Linux:

sudo dnf install ripgrep

4.2. Basic ripgrep Usage

rg "password" /home/user/

By default, ripgrep:

  • Searches recursively
  • Displays file names, line numbers, and matching lines
  • Ignores .gitignore-excluded files automatically

4.3. Search Only Specific File Types

rg "db_name" --type conf

This searches only .conf files.

5. Practical Examples

Here are some practical use cases.

Debugging configurations:

grep -rl "db_name" /home/ostechnix/pg/

Searching logs for errors:

grep -ril "backup" /var/log/

Finding stored secrets:

grep -r "mysql" /home/ostechnix/myproject/

Exploring large codebases:

rg "get_user" src/

6. Comparison Table

Featuregrepfind + grepripgrep (rg)
Recursive searchYesYesYes
Filter by file typevia --includevia -namevia --type
SpeedGoodAverageFastest
Respects .gitignoreNoNoYes
Beginner-friendlyYesModerateYes

7. Frequently Asked Questions (FAQs)

Q1. How do I search for text inside files in Linux?

A: Use the following command: grep -rl "text" . This searches recursively and lists matching files.

Q2. What is the difference between grep and ripgrep?

A: grep is widely available, reliable for everyday searches. ripgrep (rg) is much faster, ignores unnecessary files, and better for large codebases.

Q3. How do I search only .conf files in Linux?

A: grep -r --include="*.conf" "keyword" /etc/

Q4. How can I exclude certain folders when searching?

A: grep -rl --exclude-dir="node_modules" "API_KEY" .

8. Summary

In this guide, we explained how to use Linux grep, find and ripgrep commands to search inside files recursively with example commands.

If you're wondering which command to use and when, follow this order:

  • Use grep for quick, everyday searches.
  • Use find + grep when you need precise filtering.
  • Use ripgrep when working with huge projects or when speed matters.

Mastering these commands will make you faster at debugging, searching logs, and exploring Linux systems.

Related Read:

You May Also Like

Leave a Comment

* By using this form you agree with the storage and handling of your data by this website.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

This website uses cookies to improve your experience. By using this site, we will assume that you're OK with it. Accept Read More