grepdiff — show files modified by a diff containing a regex


grepdiff [[-n] | [--line-number]] [--number-files] [[-p n] | [--strip-match=n]] [--strip=n] [--addprefix=PREFIX] [[-s] | [--status]] [[-i PATTERN] | [--include=PATTERN]] [[-x PATTERN] | [--exclude=PATTERN]] [[-v] | [--verbose]] [[-E] | [--extended-regexp]] [[-H] | [--with-filename]] [[-h] | [--no-filename]] [--output-matching=WHAT] {[REGEX] | [-f FILE]} [file...]

grepdiff {[--help] | [--version] | [--list] | [--filter ...]}


For each file modified by a patch, if the patch hunk contains the REGEX then the file's name is printed.

The regular expression is treated as POSIX Basic Regular Expression syntax, unless the -E option is given in which case POSIX Extended Regular Expression syntax is used.

For example, to see the patches in my.patch which contain the regular expression “pf_gfp_mask”, use:

grepdiff pf_gfp_mask my.patch | \
  xargs -rn1 filterdiff my.patch -i

You can use both unified and context format diffs with this program.


-n, --line-number

Display the line number that each patch begins at. If verbose output is requested, each matching hunk is listed as well.

For a description of the output format see lsdiff(1).


File numbers are listed, beginning at 1, before each filename.

-p n, --strip-match=n

When matching, ignore the first n components of the pathname.


Remove the first n components of the pathname before displaying it.


Prefix the pathname with PREFIX before displaying it.


Show file additions, modifications and removals. A file addition is indicated by a “+”, a removal by a “-”, and a modification by a “!”.

-i PATTERN, --include=PATTERN

Include only files matching PATTERN.

-x PATTERN --exclude=PATTERN

Exclude files matching PATTERN.

-E, --extended-regexp

Use POSIX Extended Regular Expression syntax.

-H, --with-filename

Print the name of the patch file containing each match.

-h, --no-filename

Suppress the name of the patch file containing each match.

-f FILE, --file=FILE

Read regular expressions from FILE, one per line.


Display the matching hunk-level or file-level diffs.


Display a short usage message.


Display the version number of grepdiff.


Behave like filterdiff(1) instead.


Behave like lsdiff(1) instead.

See also

filterdiff(1), lsdiff(1)