Command line and power tools
If you search inside files regularly, ripgrep is one of the few tools that is simply better in almost every dimension.
brew install ripgrep
.gitignore by defaultThe default exclusions matter as much as the speed: not searching node_modules is why it finishes.
rg "searchterm" # recursive from here
rg -i "searchterm" # case-insensitive
rg -t py "def main" # only Python files
rg -l "TODO" # filenames only
rg -C 3 "error" # 3 lines of context
rg --hidden --no-ignore "key" # search everything, ignore nothing
grep is guaranteed presentrg searches inside files. That is a different job from finding a file by name, and it is the expensive one — every byte must be read. A filename index answers "where is X" in milliseconds; rg answers "which files mention X" in seconds. Most workflows want both, used for different questions.
Not by default. Use --hidden, and --no-ignore to also ignore .gitignore rules.
Not directly — it searches text. Use pdftotext first, or a tool with a PDF preprocessor.
Everywhere keeps track of every file on your Mac — including the folders Spotlight hides and drives you have unplugged. Free for a day, then $19 once.
Download for Mac