Search inside nested archives.
Useful for locating data lost inside many levels of compressed archives without using additional storage.
Supports the following compression formats for both archives and files:
- gzip
- bzip2
- xz (requires xz-utils with
xz
CLI on$PATH
) - zstd (requires zstd with
zstd
CLI on$PATH
) - uncompressed
As well as the following archive formats:
- Tar (V7, USTAR, PAX, GNU, STAR)
- ZIP (with size limitation)
Compressed files and archives must have a recognizable file extension to be searched.
If multiple paths are specified, they are searched in parallel with nondeterministic output order. However, output order is deterministic for any single path. Only one path per CPU is searched concurrently.
Nested ZIP files must be read into memory to be searched.
By default, ZIP files larger 10 MB are not searched.
The -z
option may be used to adjust the size limit.
Usage:
ztgrep [OPTIONS] regexp paths...
Search Options:
-b, --skip-body Skip file bodies
-n, --skip-name Skip file names inside of tarballs
-z, --max-zip-size= Maximum zip file size to search in bytes (default: 10 MB)
General Options:
-v, --version Return ztgrep version
Help Options:
-h, --help Show this help message
Binaries for macOS, Linux, and Windows are attached to each release and available via Homebrew:
brew install sclevine/tap/ztgrep
ztgrep
is also available as a Docker image.
ztgrep may be imported as a Go package. See godoc for details.