> ## Documentation Index > Fetch the complete documentation index at: https://vineetagarwal-code-claude-code.mintlify.app/llms.txt > Use this file to discover all available pages before exploring further. # Search > Find files by name pattern and search file contents with regular expressions. Claude Code has two dedicated search tools: `Glob` for finding files by name and `Grep` for searching file contents. Both are preferred over running `find` or `grep` as Bash commands — they have correct permission integration, return results sorted by modification time, and produce structured output Claude can act on directly. *** ## Glob Finds files whose paths match a glob pattern. Results are sorted by modification time (most recently modified first). ### Parameters A glob pattern to match file paths against. Supports `*` (any characters within a path segment), `**` (any number of path segments), and `?` (single character). The directory to search in. Defaults to the current working directory. Must be an existing directory path — omit the parameter entirely to use the default; do not pass `null` or `"undefined"`. ### Output Returns a list of matching file paths, relative to the working directory, sorted by modification time. Results are capped at **100 files**. If the result is truncated, consider narrowing the pattern or specifying a more specific `path`. ### Pattern examples | Pattern | Matches | | ---------------------------- | ----------------------------------------------- | | `**/*.ts` | All TypeScript files anywhere in the tree | | `src/**/*.tsx` | All TSX files under `src/` | | `*.json` | JSON files in the current directory only | | `**/{package,tsconfig}.json` | `package.json` and `tsconfig.json` at any depth | | `tools/*/prompt.ts` | `prompt.ts` one level inside `tools/` | Use `Glob` when you know the filename or extension you're looking for. For open-ended exploration that requires multiple rounds of searching, use the `Task` (Agent) tool instead. *** ## Grep Searches file contents using regular expressions, powered by ripgrep. Returns matching file paths, line numbers, and (optionally) matching lines. ### Parameters A regular expression to search for in file contents. Supports full regex syntax: character classes, quantifiers, lookaheads, alternation, etc. Ripgrep syntax differs from POSIX `grep` in one notable way: literal braces must be escaped. Use `interface\{\}` to find `interface{}` in Go code. File or directory to search in. Defaults to the current working directory. Can be a single file path to restrict the search. Glob pattern to filter which files are searched (e.g., `"*.js"`, `"*.{ts,tsx}"`). Maps to `rg --glob`. Ripgrep file type to restrict the search (e.g., `"js"`, `"py"`, `"rust"`, `"go"`, `"java"`). More efficient than `glob` for standard file type filtering. Maps to `rg --type`. Controls what is returned. Options: * `"files_with_matches"` *(default)* — returns file paths only * `"content"` — returns matching lines with context support * `"count"` — returns match counts per file Case-insensitive search. Maps to `rg -i`. Show line numbers in output. Applies to `output_mode: "content"` only. Defaults to `true`. Lines of context to show after each match. Applies to `output_mode: "content"` only. Maps to `rg -A`. Lines of context to show before each match. Applies to `output_mode: "content"` only. Maps to `rg -B`. Lines of context to show before and after each match (equivalent to `rg -C`). Takes precedence over `-A` and `-B`. Applies to `output_mode: "content"` only. Enable multiline mode where `.` matches newlines and patterns can span multiple lines (`rg -U --multiline-dotall`). Default: `false`. Limit output to the first N lines or entries (equivalent to `| head -N`). Applies across all output modes. Defaults to **250**. Pass `0` for unlimited results. Skip the first N entries before applying `head_limit` (equivalent to `| tail -n +N`). Useful for paginating large result sets. Defaults to `0`. ### Output modes Returns a list of file paths that contain at least one match, sorted by modification time. ``` Found 3 files src/utils/permissions/bashClassifier.ts src/tools/BashTool/BashTool.tsx src/tools/BashTool/bashPermissions.ts ``` Returns the matching lines themselves, with optional surrounding context. ``` src/utils/permissions/bashClassifier.ts:42:export function classifyBashCommand( src/utils/permissions/bashClassifier.ts:43: command: string, ``` Returns match counts per file. ``` src/utils/permissions/bashClassifier.ts:7 src/tools/BashTool/bashPermissions.ts:3 Found 10 total occurrences across 2 files. ``` ### Pattern syntax notes Ripgrep treats `{` and `}` as literal characters by default, unlike some regex engines that use them for quantifiers. To search for literal braces, escape them: ``` interface\{\} → finds interface{} map\[string\] → finds map[string] ``` By default, `.` does not match newlines. To search across line boundaries: ```json theme={null} { "pattern": "struct \\{[\\s\\S]*?field", "multiline": true } ``` `glob` and `type` can be used independently or together: ```json theme={null} { "pattern": "TODO", "type": "ts" } ``` ```json theme={null} { "pattern": "TODO", "glob": "src/**/*.ts" } ``` Use `type` for standard language types; use `glob` when the file set doesn't align with a named type. ### Excluded directories Grep automatically excludes version-control metadata directories: `.git`, `.svn`, `.hg`, `.bzr`, `.jj`, `.sl`. Built with [Mintlify](https://mintlify.com).