Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
GREPDIFF(1)			    Man pages			     GREPDIFF(1)

NAME
     grepdiff - show files modified by a diff containing a regex

SYNOPSIS
     grepdiff  [[-n]  |  [--line-number]]  [[-N]  |  [--number-files]] [[-p n] |
	      [--strip-match=n]]     [--strip=n]     [--git-prefixes=strip|keep]
	      [--git-extended-diffs=exclude|include] [--addprefix=PREFIX] [--ad-
	      doldprefix=PREFIX]  [--addnewprefix=PREFIX]  [[-s]  |  [--status]]
	      [--empty-files-as-absent]  [[-i PATTERN]	|   [--include=PATTERN]]
	      [[-I FILE]  |  [--include-from-file=FILE]]  [[-x PATTERN] | [--ex-
	      clude=PATTERN]]	 [[-X FILE]    |     [--exclude-from-file=FILE]]
	      [[-# RANGE]   |	[--hunks=RANGE]]  [--lines=RANGE]  [[-FRANGE]  |
	      [--files=RANGE]] [--annotate]  [--as-numbered-lines=WHEN]  [--for-
	      mat=FORMAT]  [--remove-timestamps]  [[-v]  |  [--verbose]] [[-z] |
	      [--decompress]] [[-E] | [--extended-regexp]] [[-H] | [--with-file-
	      name]]   [[-h]   |    [--no-filename]]	[--output-matching=WHAT]
	      [--only-match=WHAT] {[REGEX] | [-f FILE]} [file...]

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

DESCRIPTION
     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  Expres-
     sion syntax is used. When compiled with PCRE2 support, PCRE regular expres-
     sions  are used instead of POSIX regular expressions, and the -E option has
     no effect since PCRE already supports extended regular expression	features
     by default.

     You  can  use unified, context, and Git format diffs with this program. Git
     format includes support for binary files,	file  renames,	permission  mode
     changes, and other Git-specific diff features.

OPTIONS
     -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).

     -N, --number-files
	 File numbers are listed, beginning at 1, before each filename.

     -pn, --strip-match=n
	 When matching, ignore the first n components of the pathname.

     --strip=n
	 Remove the first n components of the pathname before displaying it.

     --git-prefixes=strip|keep
	 How to handle a/ and b/ prefixes in Git diff filenames. With strip, re-
	 moves the prefixes both for filename matching (when using -i and -x op-
	 tions)  and  for  filename  output (similar to --strip). With keep (de-
	 fault), preserves existing behavior. Applies to both Git-specific diffs
	 (binary files, renames, mode changes) and traditional diffs  when  part
	 of a Git patch. Note: With keep, copy and rename operations are treated
	 as if they had a/ and b/ prefixes for consistency with other Git opera-
	 tions. The default will change to strip in version 0.5.0.

     --git-extended-diffs=exclude|include
	 Controls  whether  to	process  Git  diffs  without traditional content
	 hunks. This includes renames, copies,	mode-only  changes,  and  binary
	 files.  With  exclude (default in 0.4.x), these diffs are skipped. With
	 include (default in 0.5.0+), these diffs are processed  normally.  This
	 option affects file numbering with -N and file filtering with -F.

     --addprefix=PREFIX
	 Prefix  the  pathname with PREFIX before displaying it. This will over-
	 ride any individual  settings	specified  with  the  --addoldprefix  or
	 --addnewprefix options.

     --addoldprefix=PREFIX
	 Prefix pathnames for old or original files in the output by PREFIX.

     --addnewprefix=PREFIX
	 Prefix pathnames for updated or new files in the output by PREFIX.

     -s
	 Show file additions, modifications and removals. A file addition is in-
	 dicated by a "+", a removal by a "-", and a modification by a "!".

     --empty-files-as-absent
	 Treat empty files as absent when matching patterns.

     -iPATTERN, --include=PATTERN
	 Include only files matching PATTERN.

     -IFILE, --include-from-file=FILE
	 Include only files matching any pattern listed in FILE, one pattern per
	 line. All other lines in the input are suppressed.

     -x PATTERN --exclude=PATTERN
	 Exclude files matching PATTERN.

     -XFILE, --exclude-from-file=FILE
	 Exclude  files  matching  any	pattern  listed in FILE, one pattern per
	 line. All other lines in the input are displayed.

     -#RANGE, --hunks=RANGE
	 Only include hunks within the specified RANGE. Hunks are numbered  from
	 1,  and  the range is a comma-separated list of numbers or "first-last"
	 spans, optionally preceded by a modifier 'x' which inverts  the  entire
	 range; either the first or the last in the span may be omitted to indi-
	 cate no limit in that direction.

     --lines=RANGE
	 Only  list  hunks  that  contain  lines from the original file that lie
	 within the specified RANGE. Lines are numbered from 1, and the range is
	 a comma-separated list of numbers  or	"first-last"  spans,  optionally
	 preceded  by  a modifier 'x' which inverts the entire range; either the
	 first or the last in the span may be omitted to indicate  no  limit  in
	 that direction.

     -F=RANGE, --files=RANGE
	 Only  list  files  indicated by the specified RANGE. Files are numbered
	 from 1 in the order they appear in the patch input, and the range is  a
	 comma-separated  list of numbers or "first-last" spans, optionally pre-
	 ceded by a modifier 'x' which inverts	the  entire  range;  either  the
	 first	or  the  last in the span may be omitted to indicate no limit in
	 that direction.

     --annotate
	 Annotate each hunk with the filename and hunk number.

     --as-numbered-lines=before|after|original-before|original-after
	 Instead of a patch fragment, display the lines of  the  selected  hunks
	 with  the  line  number  of the file before (or after) the patch is ap-
	 plied, followed by a TAB character and a colon,  at  the  beginning  of
	 each  line.  Each  hunk except the first will have a line consisting of
	 "..."	before it.

	 The before and after options show line numbers adjusted for any skipped
	 hunks. The original-before and original-after options show line numbers
	 as they appear in the original diff, preserving the original line  num-
	 ber  context.	This is useful for CI/CD systems that need to report er-
	 rors on the exact line numbers from the original diff.

     --format=unified|context
	 Use specified output format.

     --remove-timestamps
	 Do not include file timestamps in the output.

     -z, --decompress
	 Decompress files with extensions .gz and .bz2.

     -E, --extended-regexp
	 Use POSIX Extended Regular Expression syntax. Note: when compiled  with
	 PCRE2	support,  this	option has no effect as PCRE regular expressions
	 are used by default and already  support  extended  regular  expression
	 features.

     -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.

     -fFILE, --file=FILE
	 Read regular expressions from FILE, one per line.

     --output-matching=hunk|file
	 Display the matching hunk-level or file-level diffs.

     --only-match=rem|removals|add|additions|mod|modifications|all
	 Limit regex matching to removals, additions, modifications or the whole
	 hunk.

     --help
	 Display a short usage message.

     --version
	 Display the version number of grepdiff.

     --filter
	 Behave like filterdiff(1) instead.

     --list
	 Behave like lsdiff(1) instead.

EXAMPLES
     To  quickly identify which files in a large patch contain memory allocation
     changes (useful for code review):

	 grepdiff "malloc\|free\|realloc" large-patch.diff

     This shows only the filenames, giving you a quick	overview  without  being
     overwhelmed by diff content.

     To see the actual hunks containing the pattern:

	 grepdiff --output-matching=hunk "malloc" patch.diff

     To see complete file diffs for files containing the pattern:

	 grepdiff --output-matching=file "malloc" patch.diff

     For CI/CD systems that need line numbers matching the original diff context
     (useful for error reporting):

	 grepdiff pattern --output-matching=hunk \
	   --as-numbered-lines=original-after patch.file

     Git  format  diffs are fully supported. For example, to find files in a git
     patch that contain changes to malloc calls:

	 grepdiff "malloc" git-patch.patch

     Note that grepdiff searches in the hunk content (the actual code  changes),
     not  in  Git  metadata like rename headers. Files with only renames or mode
     changes (no content hunks) won't be found even if the  pattern  appears  in
     the Git headers.

SEE ALSO
     filterdiff(1), lsdiff(1), patchview(1)

AUTHOR
     Tim Waugh <twaugh@redhat.com>
	 Package maintainer

patchutils			   10 Feb 2011			     GREPDIFF(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=grepdiff&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help