Coming from Windows
A Mac with ten repositories on it has more files in build directories than everywhere else combined. That breaks most search tools.
One web project can hold 40,000 files in node_modules. Add Xcode's DerivedData, Rust's target, Python's __pycache__, .git internals — and the majority of files on the disk are build output nobody wants in results.
macOS excludes several of these by default, which is why searching for webpack.config.js returns nothing.
Contents: ripgrep. Respects .gitignore, skips binaries, parallel, fast.
brew install ripgrep
rg "functionName" --type ts
Names: an index that includes everything but demotes the noise. The right behaviour is not to exclude node_modules — you sometimes need it — but to rank it below your own source so it never crowds out a real result.
Project navigation: your editor. ⌘P in VS Code and ⇧⌘O in Xcode are scoped to the project and hard to beat there.
Grant Full Disk Access to your terminal, or find and ls will hit permission errors in protected locations.
find -prune is the difference between a two-second search and a two-minute one:
find . -type d -name node_modules -prune -o -type f -name "*.ts" -print
Check what is actually costing you space:
find ~ -type d \( -name node_modules -o -name DerivedData -o -name target \) -prune \
-exec du -sh {} \; 2>/dev/null | sort -hr | head -20
Developers know filenames. The question is almost never "which file mentions this" — that is what rg is for — but "where is AppCoordinator.swift", across half a dozen checkouts. That is a names problem, and it is the one Spotlight is worst at.
macOS already does by default. The better behaviour is including it but ranking it low, so it is available when you actually want it.
ripgrep for contents. For filenames, an index beats any live search.
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