Files
AX-Copilot/docs/claude-code-docs-main/en/reference/tools/search.md

6.9 KiB

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:
{
  "pattern": "struct \\{[\\s\\S]*?field",
  "multiline": true
}
`glob` and `type` can be used independently or together:
{ "pattern": "TODO", "type": "ts" }
{ "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.