Multi File Read Tool (read_many_files
)
This document describes the read_many_files
tool for the Gemini CLI.
Description
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:
- For text files, this tool concatenates their content into a single string.
- For image (e.g., PNG, JPEG) and PDF files, it reads and returns them as base64-encoded data, provided they are explicitly requested by name or extension.
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.
Arguments
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 ifuseDefaultExcludes
is true.include
(list[string], optional): Additional glob patterns to include. These are merged withpaths
(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 totrue
.useDefaultExcludes
(boolean, optional): Whether to apply a list of default exclusion patterns (e.g.,node_modules
,.git
, non image/pdf binary files). Defaults totrue
.respect_git_ignore
(boolean, optional): Whether to respect .gitignore patterns when finding files. Defaults to true.
How to use read_many_files
with the Gemini CLI
read_many_files
searches for files matching the provided paths
and include
patterns, while respecting exclude
patterns and default excludes (if enabled).
- For text files: it reads the content of each matched file (attempting to skip binary files not explicitly requested as image/PDF) and concatenates it into a single string, with a separator
--- {filePath} ---
between the content of each file. Uses UTF-8 encoding by default. - For image and PDF files: if explicitly requested by name or extension (e.g.,
paths: ["logo.png"]
orinclude: ["*.pdf"]
), the tool reads the file and returns its content as a base64 encoded string. - The tool attempts to detect and skip other binary files (those not matching common image/PDF types or not explicitly requested) by checking for null bytes in their initial content.
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
examples
Read 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 including test files and all JPEGs in an images
folder:
read_many_files(paths=["**/*.js"], include=["**/*.test.js", "images/**/*.jpg"], useDefaultExcludes=False)
Important notes
- Binary file handling:
- Image/PDF files: The tool can read common image types (PNG, JPEG, etc.) and PDF files, returning them as base64 encoded data. These files must be explicitly targeted by the
paths
orinclude
patterns (e.g., by specifying the exact filename likeimage.png
or a pattern like*.jpeg
). - Other binary files: The tool attempts to detect and skip other types of binary files by examining their initial content for null bytes. The tool excludes these files from its output.
- Image/PDF files: The tool can read common image types (PNG, JPEG, etc.) and PDF files, returning them as base64 encoded data. These files must be explicitly targeted by the
- Performance: Reading a very large number of files or very large individual files can be resource-intensive.
- Path specificity: Ensure paths and glob patterns are correctly specified relative to the tool's target directory. For image/PDF files, ensure the patterns are specific enough to include them.
- Default excludes: Be aware of the default exclusion patterns (like
node_modules
,.git
) and useuseDefaultExcludes=False
if you need to override them, but do so cautiously.