Skip to content

sclevine/ztgrep

Repository files navigation

ztgrep

GoDoc Tests

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

Installation

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.

Go Package

ztgrep may be imported as a Go package. See godoc for details.