zgrep - search compressed files for a regular expression


zgrep [options] <pattern> [files]


zgrep is a front end to the program grep that allows transparent search on any combination of compressed and uncompressed files. If any file given is compressed, its decompressed content is used. If a file given does not exist, and its name does not end with one of the known extensions, zgrep tries the compressed file names corresponding to the formats supported. If a file fails to decompress, zgrep continues searching the rest of the files.

If a file is specified as ’-’, data are read from standard input, decompressed if needed, and fed to grep. Data read from standard input must be of the same type; all uncompressed or all in the same compressed format.

If no files are specified, recursive searches examine the current working directory, and nonrecursive searches read standard input.

The formats supported are bzip2, gzip, lzip, and xz.

Exit status is 0 if match, 1 if no match, 2 if trouble. Some options only work if the grep program used supports them.



display this help and exit

-V, --version

output version information and exit

-a, --text

treat all files as text

-A, --after-context=<n>

print <n> lines of trailing context

-b, --byte-offset

print the byte offset of each line

-B, --before-context=<n>

print <n> lines of leading context

-c, --count

only print a count of matching lines per file

-C, --context=<n>

print <n> lines of output context


show matched strings in color

-e, --regexp=<pattern>

use <pattern> as the pattern to match

-E, --extended-regexp

<pattern> is an extended regular expression

-f, --file=<file>

obtain patterns from <file>

-F, --fixed-strings

<pattern> is a set of newline-separated strings

-h, --no-filename

suppress the prefixing filename on output

-H, --with-filename

print the filename for each match

-i, --ignore-case

ignore case distinctions


ignore binary files

-l, --files-with-matches

only print names of files containing matches

-L, --files-without-match

only print names of files containing no matches

-m, --max-count=<n>

stop after <n> matches

-M, --format=<list>

process only the formats in <list>

-n, --line-number

print the line number of each line

-N, --no-rcfile

don’t read runtime configuration file

-o, --only-matching

show only the part of a line matching <pattern>

-O, --force-format=<fmt>

force the format given (bz2, gz, lz, xz)

-q, --quiet

suppress all messages

-r, --recursive

operate recursively on directories

-R, --dereference-recursive

recursively follow symbolic links

-s, --no-messages

suppress error messages

-v, --invert-match

select non-matching lines


verbose mode (show error messages)

-w, --word-regexp

match only whole words

-x, --line-regexp

match only whole lines


set compressor and options for bzip2 format


set compressor and options for gzip format


set compressor and options for lzip format


set compressor and options for xz format

Numbers may be followed by a multiplier: k = kB = 10^3 = 1000, Ki = KiB = 2^10 = 1024, M = 10^6, Mi = 2^20, G = 10^9, Gi = 2^30, etc...


Report bugs to zutils-bug [AT]
Zutils home page:


Copyright © 2021 Antonio Diaz Diaz. License GPLv2+: GNU GPL version 2 or later <>;
This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.