read_many_files
)This document describes the read_many_files
tool for the Gemini CLI.
Use read_many_files
to read content from multiple files specified by paths or glob patterns. The behavior of this tool depends on the provided files:
read_many_files
can be used to perform tasks such as getting an overview of a codebase, finding where specific functionality is implemented, reviewing documentation, or gathering context from multiple configuration files.
Note: read_many_files
looks for files following the provided paths or glob patterns. A directory path such as "/docs"
will return an empty result; the tool requires a pattern such as "/docs/*"
or "/docs/*.md"
to identify the relevant files.
read_many_files
takes the following arguments:
paths
(list[string], required): An array of glob patterns or paths relative to the tool’s target directory (e.g., ["src/**/*.ts"]
, ["README.md", "docs/*", "assets/logo.png"]
).exclude
(list[string], optional): Glob patterns for files/directories to exclude (e.g., ["**/*.log", "temp/"]
). These are added to default excludes if useDefaultExcludes
is true.include
(list[string], optional): Additional glob patterns to include. These are merged with paths
(e.g., ["*.test.ts"]
to specifically add test files if they were broadly excluded, or ["images/*.jpg"]
to include specific image types).recursive
(boolean, optional): Whether to search recursively. This is primarily controlled by **
in glob patterns. Defaults to true
.useDefaultExcludes
(boolean, optional): Whether to apply a list of default exclusion patterns (e.g., node_modules
, .git
, non image/pdf binary files). Defaults to true
.respect_git_ignore
(boolean, optional): Whether to respect .gitignore patterns when finding files. Defaults to true.read_many_files
with the Gemini CLIread_many_files
searches for files matching the provided paths
and include
patterns, while respecting exclude
patterns and default excludes (if enabled).
--- {filePath} ---
between the content of each file. Uses UTF-8 encoding by default.paths: ["logo.png"]
or include: ["*.pdf"]
), the tool reads the file and returns its content as a base64 encoded string.Usage:
read_many_files(paths=["Your files or paths here."], include=["Additional files to include."], exclude=["Files to exclude."], recursive=False, useDefaultExcludes=false, respect_git_ignore=true)
read_many_files
examplesRead all TypeScript files in the src
directory:
read_many_files(paths=["src/**/*.ts"])
Read the main README, all Markdown files in the docs
directory, and a specific logo image, excluding a specific file:
read_many_files(paths=["README.md", "docs/**/*.md", "assets/logo.png"], exclude=["docs/OLD_README.md"])
Read all JavaScript files but explicitly include test files and all JPEGs in an images
folder:
read_many_files(paths=["**/*.js"], include=["**/*.test.js", "images/**/*.jpg"], useDefaultExcludes=False)
paths
or include
patterns (e.g., by specifying the exact filename like video.mp4
or a pattern like *.mov
).node_modules
, .git
) and use useDefaultExcludes=False
if you need to override them, but do so cautiously.