qgrep

qgrep takes a different approach to code search than tools like ripgrep or ack: instead of scanning files on every query, it builds a persistent compressed database of your source tree and searches that. The upfront indexing cost pays off with near-instant results even across very large codebases.

You organize code into named projects, each pointing at one or more source directories. Once indexed, searches run against the database rather than the filesystem. The watch command keeps the database current by monitoring for file changes in the background.

Search supports regex patterns, literal strings, case-insensitive matching, and fuzzy matching. You can also search by file path or name rather than content, and filter results with include/exclude patterns per project.

Basic usage

qgrep init myproject ~/src/myproject   # Create a new project.
qgrep update myproject                  # Build the initial index.
qgrep search myproject "main\s*\("      # Search with a regex.
qgrep search myproject i "hello world"  # Case-insensitive search.
qgrep files myproject widget            # Find files by name.
qgrep watch myproject                   # Keep the index updated automatically.