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

  
 
  

home | help
RG(1)				  User Commands 			   RG(1)

NAME
     rg - recursively search the current directory for lines matching a pattern

SYNOPSIS
     rg [OPTIONS] PATTERN [PATH...]

     rg [OPTIONS] -e PATTERN... [PATH...]

     rg [OPTIONS] -f PATTERNFILE... [PATH...]

     rg [OPTIONS] --files [PATH...]

     rg [OPTIONS] --type-list

     command | rg [OPTIONS] PATTERN

     rg [OPTIONS] --help

     rg [OPTIONS] --version

DESCRIPTION
     ripgrep  (rg)  recursively  searches the current directory for a regex pat-
     tern.  By default, ripgrep will respect your .gitignore  and  automatically
     skip hidden files/directories and binary files.

     ripgrep's	default  regex engine uses finite automata and guarantees linear
     time searching. Because of this, features like backreferences and arbitrary
     look-around are not supported. However, if ripgrep  is  built  with  PCRE2,
     then  the	-P/--pcre2  flag  can be used to enable backreferences and look-
     around.

     ripgrep supports configuration files. Set RIPGREP_CONFIG_PATH to a configu-
     ration file. The file can specify one shell argument per line. Lines start-
     ing with # are ignored. For more details, see CONFIGURATION FILES below.

     ripgrep will automatically detect if stdin is a readable  file  and  search
     stdin  for  a  regex pattern, e.g. ls | rg foo. In some environments, stdin
     may exist when it shouldn't. To turn off stdin detection, one  can  explic-
     itly specify the directory to search, e.g. rg foo ./.

     Like  other  tools  such  as ls, ripgrep will alter its output depending on
     whether stdout is connected to a tty. By default, when printing a tty, rip-
     grep will enable colors, line numbers and a heading format that lists  each
     matching file path once instead of once per matching line.

     Tip: to disable all smart filtering and make ripgrep behave a bit more like
     classical grep, use rg -uuu.

REGEX SYNTAX
     ripgrep  uses  Rust's  regex engine by default, which documents its syntax:
     https://docs.rs/regex/1.*/regex/#syntax

     ripgrep uses byte-oriented regexes, which has  some  additional  documenta-
     tion: https://docs.rs/regex/1.*/regex/bytes/index.html#syntax

     To  a  first  approximation,  ripgrep  uses Perl-like regexes without look-
     around or backreferences. This makes them very similar  to  the  "extended"
     (ERE)  regular  expressions supported by *egrep*, but with a few additional
     features like Unicode character classes.

     If you're using ripgrep with  the	-P/--pcre2  flag,  then  please  consult
     https://www.pcre.org  or  the PCRE2 man pages for documentation on the sup-
     ported syntax.

POSITIONAL ARGUMENTS
     PATTERN	 A regular expression used for searching. To match a pattern be-
		 ginning with a dash, use the -e/--regexp option.

     PATH	 A file or directory to search. Directories are searched  recur-
		 sively.  File	paths  specified  explicitly on the command line
		 override glob and ignore rules.

OPTIONS
     This section documents all flags that ripgrep accepts.  Flags  are  grouped
     into categories below according to their function.

     Note that many options can be turned on and off. In some cases, those flags
     are not listed explicitly below. For example, the --column flag (listed be-
     low)  enables  column numbers in ripgrep's output, but the --no-column flag
     (not listed below) disables them. The reverse can also exist. For	example,
     the --no-ignore flag (listed below) disables ripgrep's gitignore logic, but
     the --ignore flag (not listed below) enables it. These flags are useful for
     overriding  a  ripgrep  configuration  file (or alias) on the command line.
     Each flag's documentation notes whether an inverted flag  exists.	 In  all
     cases, the flag specified last takes precedence.

   INPUT OPTIONS
     -e PATTERN, --regexp=PATTERN
	 A  pattern  to  search for. This option can be provided multiple times,
	 where all patterns given are searched, in addition to any patterns pro-
	 vided by -f/--file. Lines matching at least one of  the  provided  pat-
	 terns	are printed.  This flag can also be used when searching for pat-
	 terns that start with a dash.

	 For example, to search for the literal -foo:

	     rg -e -foo

	 You can also use the special -- delimiter  to	indicate  that	no  more
	 flags	will  be  provided.  Namely,  the following is equivalent to the
	 above:

	     rg -- -foo

	 When -f/--file or -e/--regexp is used, then ripgrep  treats  all  posi-
	 tional arguments as files or directories to search.

     -f PATTERNFILE, --file=PATTERNFILE
	 Search  for  patterns	from  the given file, with one pattern per line.
	 When this flag is used  multiple  times  or  in  combination  with  the
	 -e/--regexp  flag,  then all patterns provided are searched. Empty pat-
	 tern lines will match all input lines, and the newline is  not  counted
	 as part of the pattern.

	 A  line  is  printed if and only if it matches at least one of the pat-
	 terns.

	 When PATTERNFILE is -, then stdin will be read for the patterns.

	 When -f/--file or -e/--regexp is used, then ripgrep  treats  all  posi-
	 tional arguments as files or directories to search.

     --pre=COMMAND
	 For  each  input  PATH, this flag causes ripgrep to search the standard
	 output of COMMAND PATH instead of the contents of  PATH.   This  option
	 expects  the  COMMAND program to either be a path or to be available in
	 your PATH. Either an empty string COMMAND or  the  --no-pre  flag  will
	 disable this behavior.

	 WARNING     When this flag is set, ripgrep will unconditionally spawn a
		     process  for  every  file that is searched. Therefore, this
		     can incur an unnecessarily large performance penalty if you
		     don't otherwise need the flexibility offered by this  flag.
		     One  possible  mitigation	to this is to use the --pre-glob
		     flag to limit which files a preprocessor is run with.

	 A preprocessor is not run when ripgrep is searching stdin.

	 When searching over sets of files that may require one of several  pre-
	 processors,  COMMAND should be a wrapper program which first classifies
	 PATH based on magic numbers/content or based on the PATH name and  then
	 dispatches  to  an  appropriate preprocessor. Each COMMAND also has its
	 standard input connected to PATH for convenience.

	 For example, a shell script for COMMAND might look like:

	     case "$1" in
	     *.pdf)
		 exec pdftotext "$1" -
		 ;;
	     *)
		 case $(file "$1") in
		 *Zstandard*)
		     exec pzstd -cdq
		     ;;
		 *)
		     exec cat
		     ;;
		 esac
		 ;;
	     esac

	 The above script uses pdftotext to convert a PDF file	to  plain  text.
	 For all other files, the script uses the file utility to sniff the type
	 of  the  file	based on its contents. If it is a compressed file in the
	 Zstandard format, then pzstd is used to decompress the contents to std-
	 out.

	 This overrides the -z/--search-zip flag.

     --pre-glob=GLOB
	 This flag works in conjunction with the --pre flag. Namely, when one or
	 more --pre-glob flags are given, then only files that match  the  given
	 set of globs will be handed to the command specified by the --pre flag.
	 Any  non-matching files will be searched without using the preprocessor
	 command.

	 This flag is useful when searching many  files  with  the  --pre  flag.
	 Namely,  it  provides	the  ability to avoid process overhead for files
	 that don't need preprocessing. For example, given the	following  shell
	 script, pre-pdftotext:

	     #!/bin/sh
	     pdftotext "$1" -

	 then  it  is  possible to use --pre pre-pdftotext --pre-glob '*.pdf' to
	 make it so ripgrep only executes the  pre-pdftotext  command  on  files
	 with a .pdf extension.

	 Multiple  --pre-glob  flags may be used. Globbing rules match gitignore
	 globs. Precede a glob with a ! to exclude it.

	 This flag has no effect if the --pre flag is not used.

     -z, --search-zip
	 This flag instructs ripgrep to search in  compressed  files.  Currently
	 gzip,	bzip2,	xz, LZ4, LZMA, Brotli and Zstd files are supported. This
	 option expects the decompression binaries (such as gzip) to  be  avail-
	 able in your PATH. If the required binaries are not found, then ripgrep
	 will not emit an error messages by default. Use the --debug flag to see
	 more information.

	 Note that this flag does not make ripgrep search archive formats as di-
	 rectory  trees.  It only makes ripgrep detect compressed files and then
	 decompress them before searching their contents as it would  any  other
	 file.

	 This overrides the --pre flag.

	 This flag can be disabled with --no-search-zip.

   SEARCH OPTIONS
     -s, --case-sensitive
	 Execute the search case sensitively. This is the default mode.

	 This  is a global option that applies to all patterns given to ripgrep.
	 Individual patterns can still be matched case	insensitively  by  using
	 inline  regex	flags. For example, (?i)abc will match abc case insensi-
	 tively even when this flag is used.

	 This flag overrides the -i/--ignore-case and -S/--smart-case flags.

     --crlf
	 When enabled, ripgrep will treat CRLF (\r\n) as a line  terminator  in-
	 stead of just \n.

	 Principally,  this  permits the line anchor assertions ^ and $ in regex
	 patterns to treat CRLF, CR or LF as line terminators  instead	of  just
	 LF.   Note  that  they  will never match between a CR and a LF. CRLF is
	 treated as one single line terminator.

	 When using the default regex engine, CRLF support can also  be  enabled
	 inside the pattern with the R flag. For example, (?R:$) will match just
	 before either CR or LF, but never between CR and LF.

	 This flag overrides --null-data.

	 This flag can be disabled with --no-crlf.

     --dfa-size-limit=NUM+SUFFIX?
	 The  upper  size limit of the regex DFA. The default limit is something
	 generous for any single pattern or for  many  smallish  patterns.  This
	 should  only  be  changed on very large regex inputs where the (slower)
	 fallback regex engine may otherwise be used if the limit is reached.

	 The input format accepts suffixes of K, M  or	G  which  correspond  to
	 kilobytes,  megabytes and gigabytes, respectively. If no suffix is pro-
	 vided the input is treated as bytes.

     -E ENCODING, --encoding=ENCODING
	 Specify the text encoding that ripgrep will use on all files  searched.
	 The default value is auto, which will cause ripgrep to do a best effort
	 automatic  detection  of encoding on a per-file basis. Automatic detec-
	 tion in this case only applies to files that  begin  with  a  UTF-8  or
	 UTF-16  byte-order  mark  (BOM).  No  other automatic detection is per-
	 formed. One can also specify none which will  then  completely  disable
	 BOM  sniffing and always result in searching the raw bytes, including a
	 BOM if it's present, regardless of its encoding.

	 Other supported values can  be  found	in  the  list  of  labels  here:
	 https://encoding.spec.whatwg.org/#concept-encoding-get.

	 For  more  details  on  encoding  and	how  ripgrep  deals with it, see
	 GUIDE.md.

	 The encoding detection that ripgrep uses can be reverted to  its  auto-
	 matic mode via the --no-encoding flag.

     --engine=ENGINE
	 Specify which regular expression engine to use. When you choose a regex
	 engine,  it  applies  that  choice  for every regex provided to ripgrep
	 (e.g., via multiple -e/--regexp or -f/--file flags).

	 Accepted values are default, pcre2, or auto.

	 The default value is default, which is usually the fastest  and  should
	 be  good  for most use cases. The pcre2 engine is generally useful when
	 you want to use features such as look-around  or  backreferences.  auto
	 will  dynamically  choose  between supported regex engines depending on
	 the features used in a pattern on a best effort basis.

	 Note that the pcre2 engine is an optional  ripgrep  feature.  If  PCRE2
	 wasn't included in your build of ripgrep, then using this flag will re-
	 sult in ripgrep printing an error message and exiting.

	 This  overrides previous uses of the -P/--pcre2 and --auto-hybrid-regex
	 flags.

     -F, --fixed-strings
	 Treat all patterns as literals instead of as regular expressions.  When
	 this  flag  is used, special regular expression meta characters such as
	 .(){}*+ should not need be escaped.

	 This flag can be disabled with --no-fixed-strings.

     -i, --ignore-case
	 When this flag is provided, all patterns will be searched case insensi-
	 tively.  The case insensitivity rules used by ripgrep's  default  regex
	 engine conform to Unicode's "simple" case folding rules.

	 This  is a global option that applies to all patterns given to ripgrep.
	 Individual patterns can still be matched case sensitively by using  in-
	 line regex flags. For example, (?-i)abc will match abc case sensitively
	 even when this flag is used.

	 This flag overrides -s/--case-sensitive and -S/--smart-case.

     -v, --invert-match
	 This  flag  inverts  matching.  That is, instead of printing lines that
	 match, ripgrep will print lines that don't match.

	 Note that this only inverts line-by-line matching. For example, combin-
	 ing this flag with -l/--files-with-matches will emit files that contain
	 any lines that do not match the patterns given. That's not the same as,
	 for example, --files-without-match, which will emit files that  do  not
	 contain any matching lines.

	 This flag can be disabled with --no-invert-match.

     -x, --line-regexp
	 When  enabled, ripgrep will only show matches surrounded by line bound-
	 aries.  This is equivalent to surrounding every pattern with ^  and  $.
	 In  other  words, this only prints lines where the entire line partici-
	 pates in a match.

	 This overrides the -w/--word-regexp flag.

     -m NUM, --max-count=NUM
	 Limit the number of matching lines per file searched to NUM.

	 When -U/--multiline is used, a single match that spans  multiple  lines
	 is  only  counted once for the purposes of this limit. Multiple matches
	 in a single line are counted only once, as they would be in  non-multi-
	 line mode.

	 When  combined  with  -A/--after-context or -C/--context, it's possible
	 for more matches than the maximum to be  printed  if  contextual  lines
	 contain a match.

	 Note  that  0	is a legal value but not likely to be useful. When used,
	 ripgrep won't search anything.

     --mmap
	 When enabled, ripgrep will search using memory maps when possible. This
	 is enabled by default when ripgrep thinks it will be faster.

	 Memory map searching cannot be used in all circumstances. For	example,
	 when  searching  virtual  files  or streams likes stdin. In such cases,
	 memory maps will not be used even when this flag is enabled.

	 Note that ripgrep may abort unexpectedly when memory maps are	used  if
	 it  searches a file that is simultaneously truncated. Users can opt out
	 of this possibility by disabling memory maps.

	 This flag can be disabled with --no-mmap.

     -U, --multiline
	 This flag enables searching across multiple lines.

	 When multiline mode is enabled, ripgrep will lift the restriction  that
	 a  match  cannot include a line terminator. For example, when multiline
	 mode is not enabled (the default), then the regex  \p{any}  will  match
	 any Unicode codepoint other than \n. Similarly, the regex \n is explic-
	 itly forbidden, and if you try to use it, ripgrep will return an error.
	 However, when multiline mode is enabled, \p{any} will match any Unicode
	 codepoint, including \n, and regexes like \n are permitted.

	 An  important	caveat	is that multiline mode does not change the match
	 semantics of .. Namely, in most regex matchers, a  .  will  by  default
	 match any character other than \n, and this is true in ripgrep as well.
	 In  order to make . match \n, you must enable the "dot all" flag inside
	 the regex. For example, both (?s). and (?s:.) have the same  semantics,
	 where	.  will  match	any  character, including \n. Alternatively, the
	 --multiline-dotall flag may be passed to make the  "dot  all"	behavior
	 the default. This flag only applies when multiline search is enabled.

	 There	is  no	limit on the number of the lines that a single match can
	 span.

	 WARNING: Because of how the underlying regex  engine  works,  multiline
	 searches may be slower than normal line-oriented searches, and they may
	 also  use  more  memory. In particular, when multiline mode is enabled,
	 ripgrep requires that each file it searches is laid out contiguously in
	 memory (either by reading it onto the heap or	by  memory-mapping  it).
	 Things  that  cannot  be memory-mapped (such as stdin) will be consumed
	 until EOF before searching can begin. In general, ripgrep will only  do
	 these	things when necessary.	Specifically, if the -U/--multiline flag
	 is provided but the regex does not contain patterns that would match \n
	 characters, then ripgrep will automatically  avoid  reading  each  file
	 into  memory before searching it.  Nevertheless, if you only care about
	 matches spanning at most one line, then it is always better to  disable
	 multiline mode.

	 This overrides the --stop-on-nonmatch flag.

	 This flag can be disabled with --no-multiline.

     --multiline-dotall
	 This  flag  enables "dot all" mode in all regex patterns. This causes .
	 to match line terminators when multiline  searching  is  enabled.  This
	 flag  has  no	effect	if  multiline  searching  isn't enabled with the
	 -U/--multiline flag.

	 Normally, a . will match any character except line  terminators.  While
	 this  behavior  typically  isn't  relevant  for  line-oriented matching
	 (since matches can span at most one line),  this  can	be  useful  when
	 searching with the -U/--multiline flag. By default, multiline mode runs
	 without "dot all" mode enabled.

	 This  flag is generally intended to be used in an alias or your ripgrep
	 config file if you prefer "dot all" semantics by default. Note that re-
	 gardless of whether this flag is used, "dot all" semantics can still be
	 controlled via inline flags in the regex pattern itself,  e.g.,  (?s:.)
	 always  enables  "dot	all"  whereas (?-s:.) always disables "dot all".
	 Moreover, you can use character classes like \p{any} to match any  Uni-
	 code codepoint regardless of whether "dot all" mode is enabled or not.

	 This flag can be disabled with --no-multiline-dotall.

     --no-unicode
	 This flag disables Unicode mode for all patterns given to ripgrep.

	 By  default,  ripgrep will enable "Unicode mode" in all of its regexes.
	 This has a number of consequences:

	 *  . will only match valid UTF-8 encoded Unicode scalar values.

	 *  Classes like \w, \s, \d are all Unicode aware and much  bigger  than
	    their ASCII only versions.

	 *  Case insensitive matching will use Unicode case folding.

	 *  A large array of classes like \p{Emoji} are available. (Although the
	    specific  set of classes available varies based on the regex engine.
	    In general, the default regex engine has more classes  available  to
	    it.)

	 *  Word  boundaries  (\b  and	\B) use the Unicode definition of a word
	    character.

	 In some cases it can be desirable to turn these things off.  This  flag
	 will  do  exactly  that. For example, Unicode mode can sometimes have a
	 negative impact on performance, especially when things like \w are used
	 frequently (including via bounded repetitions like \w{100})  when  only
	 their ASCII interpretation is needed.

	 This flag can be disabled with --unicode.

     --null-data
	 Enabling  this  flag causes ripgrep to use NUL as a line terminator in-
	 stead of the default of \n.

	 This is useful when searching large binary files that	would  otherwise
	 have very long lines if \n were used as the line terminator. In partic-
	 ular, ripgrep requires that, at a minimum, each line must fit into mem-
	 ory.  Using NUL instead can be a useful stopgap to keep memory require-
	 ments low and avoid OOM (out of memory) conditions.

	 This is also useful for processing NUL delimited  data,  such	as  that
	 emitted when using ripgrep's -0/--null flag or find's --print0 flag.

	 Using this flag implies -a/--text. It also overrides --crlf.

     -P, --pcre2
	 When  this flag is present, ripgrep will use the PCRE2 regex engine in-
	 stead of its default regex engine.

	 This is generally useful when you want to use features  such  as  look-
	 around or backreferences.

	 Using	this  flag  is the same as passing --engine=pcre2. Users may in-
	 stead elect to use --engine=auto to ask ripgrep to automatically select
	 the right regex engine based on the patterns given. This flag	and  the
	 --engine flag override one another.

	 Note  that  PCRE2  is	an optional ripgrep feature. If PCRE2 wasn't in-
	 cluded in your build of ripgrep, then using this flag	will  result  in
	 ripgrep  printing  an	error  message	and exiting. PCRE2 may also have
	 worse user experience in some cases, since it has  fewer  introspection
	 APIs  than ripgrep's default regex engine. For example, if you use a \n
	 in a PCRE2 regex without the -U/--multiline  flag,  then  ripgrep  will
	 silently  fail  to match anything instead of reporting an error immedi-
	 ately (like it does with the default regex engine).

	 This flag can be disabled with --no-pcre2.

     --regex-size-limit=NUM+SUFFIX?
	 The size limit of the compiled regex, where the compiled  regex  gener-
	 ally corresponds to a single object in memory that can match all of the
	 patterns provided to ripgrep. The default limit is generous enough that
	 most reasonable patterns (or even a small number of them) should fit.

	 This useful to change when you explicitly want to let ripgrep spend po-
	 tentially much more time and/or memory building a regex matcher.

	 The  input  format  accepts  suffixes	of K, M or G which correspond to
	 kilobytes, megabytes and gigabytes, respectively. If no suffix is  pro-
	 vided the input is treated as bytes.

     -S, --smart-case
	 This  flag instructs ripgrep to searches case insensitively if the pat-
	 tern is all lowercase. Otherwise, ripgrep will search case sensitively.

	 A pattern is considered all lowercase if both of  the	following  rules
	 hold:

	 *  First,  the pattern contains at least one literal character. For ex-
	    ample, a\w contains a literal (a) but just \w does not.

	 *  Second, of the literals in the pattern, none of them are  considered
	    to be uppercase according to Unicode. For example, foo\pL has no up-
	    percase literals but Foo\pL does.

	 This overrides the -s/--case-sensitive and -i/--ignore-case flags.

     --stop-on-nonmatch
	 Enabling  this option will cause ripgrep to stop reading a file once it
	 encounters a non-matching line after  it  has	encountered  a	matching
	 line.	 This  is  useful  if it is expected that all matches in a given
	 file will be on sequential lines, for example due to  the  lines  being
	 sorted.

	 This overrides the -U/--multiline flag.

     -a, --text
	 This  flag  instructs	ripgrep  to  search binary files as if they were
	 text. When this flag is present, ripgrep's  binary  file  detection  is
	 disabled.  This means that when a binary file is searched, its contents
	 may be printed if there is a match. This may cause escape codes  to  be
	 printed that alter the behavior of your terminal.

	 When  binary file detection is enabled, it is imperfect. In general, it
	 uses a simple heuristic. If a NUL byte is seen during search, then  the
	 file  is  considered  binary  and  searching stops (unless this flag is
	 present).  Alternatively, if the --binary flag is  used,  then  ripgrep
	 will  only  quit  when  it  sees  a  NUL byte after it sees a match (or
	 searches the entire file).

	 This flag overrides the --binary flag.

	 This flag can be disabled with --no-text.

     -j NUM, --threads=NUM
	 This flag sets the approximate number of threads to use. A value  of  0
	 (which  is the default) causes ripgrep to choose the thread count using
	 heuristics.

     -w, --word-regexp
	 When enabled, ripgrep will only show matches surrounded by word  bound-
	 aries.   This is equivalent to surrounding every pattern with \b{start-
	 half} and \b{end-half}. These are a custom syntax  from  ripgrep's  de-
	 fault	regex  engine  that,  unlike \b, doesn't require matching a word
	 character on one side. That is, \b{start-half} corresponds to	matching
	 \W|\A on the left and \b{end-half} corresponds to matching \W|\z on the
	 right.

	 This overrides the -x/--line-regexp flag.

     --auto-hybrid-regex
	 DEPRECATED. Use --engine instead.

	 When  this  flag  is used, ripgrep will dynamically choose between sup-
	 ported regex engines depending on the features used in a pattern.  When
	 ripgrep  chooses a regex engine, it applies that choice for every regex
	 provided to  ripgrep  (e.g.,  via  multiple  -e/--regexp  or  -f/--file
	 flags).

	 As  an  example  of how this flag might behave, ripgrep will attempt to
	 use its default finite automata based regex engine whenever the pattern
	 can be successfully compiled with that regex engine. If  PCRE2  is  en-
	 abled	and  if the pattern given could not be compiled with the default
	 regex engine, then PCRE2 will be automatically used for  searching.  If
	 PCRE2	isn't  available,  then this flag has no effect because there is
	 only one regex engine to choose from.

	 In the future, ripgrep may adjust its heuristics  for	how  it  decides
	 which	regex  engine to use. In general, the heuristics will be limited
	 to a static analysis of the patterns, and not to any  specific  runtime
	 behavior observed while searching files.

	 The  primary  downside  of using this flag is that it may not always be
	 obvious which regex engine ripgrep uses, and thus, the match  semantics
	 or  performance  profile of ripgrep may subtly and unexpectedly change.
	 However, in many cases, all regex engines will agree  on  what  consti-
	 tutes a match and it can be nice to transparently support more advanced
	 regex	features  like look-around and backreferences without explicitly
	 needing to enable them.

	 This flag can be disabled with --no-auto-hybrid-regex.

     --no-pcre2-unicode
	 DEPRECATED. Use --no-unicode instead.

	 Note that Unicode mode is enabled by default.

	 This flag can be disabled with --pcre2-unicode.

   FILTER OPTIONS
     --binary
	 Enabling this flag will cause ripgrep to search binary  files.  By  de-
	 fault,  ripgrep attempts to automatically skip binary files in order to
	 improve the relevance of results and make the search faster.

	 Binary files are heuristically detected based on whether they contain a
	 NUL byte or not. By default (without this flag set), once a NUL byte is
	 seen, ripgrep will stop searching the file. Usually, NUL bytes occur in
	 the beginning of most binary files. If a NUL byte occurs after a match,
	 then ripgrep will not print the match, stop searching	that  file,  and
	 emit a warning that some matches are being suppressed.

	 In  contrast, when this flag is provided, ripgrep will continue search-
	 ing a file even if a NUL byte is found. In particular, if a NUL byte is
	 found then ripgrep will continue searching  until  either  a  match  is
	 found	or  the end of the file is reached, whichever comes sooner. If a
	 match is found, then ripgrep will stop and print a warning saying  that
	 the search stopped prematurely.

	 If  you want ripgrep to search a file without any special NUL byte han-
	 dling at all (and potentially print binary data to  stdout),  then  you
	 should use the -a/--text flag.

	 The --binary flag is a flag for controlling ripgrep's automatic filter-
	 ing  mechanism.  As  such, it does not need to be used when searching a
	 file explicitly or when searching stdin. That is, it is only applicable
	 when recursively searching a directory.

	 When the -u/--unrestricted flag is provided for a third time, then this
	 flag is automatically enabled.

	 This flag overrides the -a/--text flag.

	 This flag can be disabled with --no-binary.

     -L, --follow
	 This flag instructs ripgrep to follow symbolic links  while  traversing
	 directories.  This  behavior  is disabled by default. Note that ripgrep
	 will check for symbolic link loops and report errors if it  finds  one.
	 ripgrep  will	also  report  errors for broken links. To suppress error
	 messages, use the --no-messages flag.

	 This flag can be disabled with --no-follow.

     -g GLOB, --glob=GLOB
	 Include or exclude files and directories for searching that  match  the
	 given glob. This always overrides any other ignore logic. Multiple glob
	 flags	may  be  used.	Globbing rules match .gitignore globs. Precede a
	 glob with a ! to exclude it. If multiple globs match a file  or  direc-
	 tory, the glob given later in the command line takes precedence.

	 As  an  extension, globs support specifying alternatives: -g 'ab{c,d}*'
	 is equivalent to -g abc -g abd.  Empty alternatives  like  -g	'ab{,c}'
	 are  not  currently  supported. Note that this syntax extension is also
	 currently enabled in gitignore files, even  though  this  syntax  isn't
	 supported  by	git itself. ripgrep may disable this syntax extension in
	 gitignore files, but it will always remain available via the  -g/--glob
	 flag.

	 When  this  flag  is  set, every file and directory is applied to it to
	 test for a match. For example, if you only want to search in a particu-
	 lar directory foo, then -g foo is incorrect because  foo/bar  does  not
	 match the glob foo. Instead, you should use -g 'foo/**'.

     --glob-case-insensitive
	 Process  all  glob patterns given with the -g/--glob flag case insensi-
	 tively.  This effectively treats -g/--glob as --iglob.

	 This flag can be disabled with --no-glob-case-insensitive.

     -., --hidden
	 Search hidden files and directories. By default, hidden files	and  di-
	 rectories  are  skipped.  Note  that if a hidden file or a directory is
	 whitelisted in an ignore file, then it will be searched  even	if  this
	 flag  isn't provided.	Similarly if a hidden file or directory is given
	 explicitly as an argument to ripgrep.

	 A file or directory is considered hidden if its base name starts with a
	 dot character (.). On operating systems which support a  "hidden"  file
	 attribute,  like Windows, files with this attribute are also considered
	 hidden.

	 Note that -./--hidden will include files and folders like .git  regard-
	 less  of --no-ignore-vcs. To exclude such paths when using -./--hidden,
	 you must explicitly ignore them using another flag or ignore file.

	 This flag can be disabled with --no-hidden.

     --iglob=GLOB
	 Include or exclude files and directories for searching that  match  the
	 given glob. This always overrides any other ignore logic. Multiple glob
	 flags	may  be  used.	Globbing rules match .gitignore globs. Precede a
	 glob with a ! to exclude it. If multiple globs match a file  or  direc-
	 tory,	the glob given later in the command line takes precedence. Globs
	 used via this flag are matched case insensitively.

     --ignore-file=PATH
	 Specifies a path to one or more gitignore formatted rules files.  These
	 patterns are applied after the patterns found in .gitignore,  .rgignore
	 and .ignore are applied and are matched relative to the current working
	 directory. That is, files specified via this flag have lower precedence
	 than  files  automatically  found in the directory tree. Multiple addi-
	 tional ignore files can be specified by  using  this  flag  repeatedly.
	 When  specifying multiple ignore files, earlier files have lower prece-
	 dence than later files.

	 If you are looking for a way to include or exclude files  and	directo-
	 ries directly on the command line, then use -g/--glob instead.

     --ignore-file-case-insensitive
	 Process  ignore  files  (.gitignore, .ignore, etc.) case insensitively.
	 Note that this comes with a performance penalty and is most  useful  on
	 case insensitive file systems (such as Windows).

	 This flag can be disabled with --no-ignore-file-case-insensitive.

     -d NUM, --max-depth=NUM
	 This  flag limits the depth of directory traversal to NUM levels beyond
	 the paths given. A value of 0 only searches the explicitly given  paths
	 themselves.

	 For  example, rg --max-depth 0 dir/ is a no-op because dir/ will not be
	 descended into. rg --max-depth 1 dir/ will search only the direct chil-
	 dren of dir.

	 An alternative spelling for this flag is --maxdepth.

     --max-filesize=NUM+SUFFIX?
	 Ignore files larger than NUM in size. This does not apply  to	directo-
	 ries.

	 The  input  format  accepts  suffixes	of K, M or G which correspond to
	 kilobytes, megabytes and gigabytes, respectively. If no suffix is  pro-
	 vided the input is treated as bytes.

	 Examples: --max-filesize 50K or --max-filesize 80M.

     --no-ignore
	 When  set,  ignore files such as .gitignore, .ignore and .rgignore will
	 not be respected. This  implies  --no-ignore-dot,  --no-ignore-exclude,
	 --no-ignore-global, --no-ignore-parent and --no-ignore-vcs.

	 This does not imply --no-ignore-files, since --ignore-file is specified
	 explicitly as a command line argument.

	 When given only once, the -u/--unrestricted flag is identical in behav-
	 ior  to  this	flag and can be considered an alias. However, subsequent
	 -u/--unrestricted flags have additional effects.

	 This flag can be disabled with --ignore.

     --no-ignore-dot
	 Don't respect filter rules from .ignore or .rgignore files.

	 This does not impact whether ripgrep will ignore files and  directories
	 whose	names begin with a dot. For that, see the -./--hidden flag. This
	 flag also does not impact whether filter rules  from  .gitignore  files
	 are respected.

	 This flag can be disabled with --ignore-dot.

     --no-ignore-exclude
	 Don't	respect filter rules from files that are manually configured for
	 the repository.  For example, this includes git's .git/info/exclude.

	 This flag can be disabled with --ignore-exclude.

     --no-ignore-files
	 When set, any --ignore-file flags, even ones that come after this flag,
	 are ignored.

	 This flag can be disabled with --ignore-files.

     --no-ignore-global
	 Don't respect filter rules from ignore files that  come  from	"global"
	 sources such as git's core.excludesFile configuration option (which de-
	 faults to $HOME/.config/git/ignore).

	 This flag can be disabled with --ignore-global.

     --no-ignore-parent
	 When  this  flag is set, filter rules from ignore files found in parent
	 directories are not respected. By default, ripgrep will ascend the par-
	 ent directories of the current working directory to look  for	any  ap-
	 plicable  ignore  files  that should be applied. In some cases this may
	 not be desirable.

	 This flag can be disabled with --ignore-parent.

     --no-ignore-vcs
	 When given, filter rules from source control ignore files (e.g.,  .git-
	 ignore)  are  not  respected. By default, ripgrep respects git's ignore
	 rules for automatic filtering. In some cases, it may not  be  desirable
	 to  respect  the source control's ignore rules and instead only respect
	 rules in .ignore or .rgignore.

	 Note that this flag does not directly affect the  filtering  of  source
	 control  files  or  folders that start with a dot (.), like .git. These
	 are affected by -./--hidden and its related flags instead.

	 This flag implies --no-ignore-parent for source control ignore files as
	 well.

	 This flag can be disabled with --ignore-vcs.

     --no-require-git
	 When this flag is given, source control ignore files such as .gitignore
	 are respected even if no git repository is present.

	 By default, ripgrep will only respect filter rules from source  control
	 ignore  files when ripgrep detects that the search is executed inside a
	 source control repository. For example, when a .git  directory  is  ob-
	 served.

	 This  flag  relaxes  the  default restriction. For example, it might be
	 useful when the contents of a git repository are stored or copied some-
	 where, but where the repository state is absent.

	 This flag can be disabled with --require-git.

     --one-file-system
	 When enabled, ripgrep will not cross file system boundaries relative to
	 where the search started from.

	 Note that this applies to each path argument given to ripgrep. For  ex-
	 ample, in the command

	     rg --one-file-system /foo/bar /quux/baz

	 ripgrep  will	search	both  /foo/bar and /quux/baz even if they are on
	 different file systems, but will not cross a file system boundary  when
	 traversing each path's directory tree.

	 This is similar to find's -xdev or -mount flag.

	 This flag can be disabled with --no-one-file-system.

     -t TYPE, --type=TYPE
	 This  flag  limits  ripgrep  to searching files matching TYPE. Multiple
	 -t/--type flags may be provided.

	 This flag supports the special value  all,  which  will  behave  as  if
	 -t/--type  was  provided  for every file type supported by ripgrep (in-
	 cluding any custom file types).  The  end  result  is	that  --type=all
	 causes ripgrep to search in "whitelist" mode, where it will only search
	 files it recognizes via its type definitions.

	 Note  that  this flag has lower precedence than both the -g/--glob flag
	 and any rules found in ignore files.

	 To see the list of available file types, use the --type-list flag.

     -T TYPE, --type-not=TYPE
	 Do not search files matching TYPE. Multiple -T/--type-not flags may  be
	 provided. Use the --type-list flag to list all available types.

	 This  flag  supports  the  special  value  all, which will behave as if
	 -T/--type-not was provided for every file  type  supported  by  ripgrep
	 (including   any   custom   file   types).   The  end	result	is  that
	 --type-not=all causes ripgrep to search in "blacklist" mode,  where  it
	 will only search files that are unrecognized by its type definitions.

	 To see the list of available file types, use the --type-list flag.

     --type-add=TYPESPEC
	 This flag adds a new glob for a particular file type. Only one glob can
	 be  added  at a time. Multiple --type-add flags can be provided. Unless
	 --type-clear is used, globs are added to any existing globs defined in-
	 side of ripgrep.

	 Note that this must be passed to every invocation of ripgrep. Type set-
	 tings are not persisted. See CONFIGURATION FILES for a workaround.

	 Example:

	     rg --type-add 'foo:*.foo' -tfoo PATTERN

	 This flag can also be used to include rules from other types  with  the
	 special include directive. The include directive permits specifying one
	 or  more other type names (separated by a comma) that have been defined
	 and its rules will automatically be imported into the	type  specified.
	 For  example,	to create a type called src that matches C++, Python and
	 Markdown files, one can use:

	     --type-add 'src:include:cpp,py,md'

	 Additional glob rules can still be added to the src type by using  this
	 flag again:

	     --type-add 'src:include:cpp,py,md' --type-add 'src:*.foo'

	 Note  that  type names must consist only of Unicode letters or numbers.
	 Punctuation characters are not allowed.

     --type-clear=TYPE
	 Clear the file type globs previously defined for TYPE. This clears  any
	 previously  defined  globs  for  the TYPE, but globs can be added after
	 this flag.

	 Note that this must be passed to every invocation of ripgrep. Type set-
	 tings are not persisted. See CONFIGURATION FILES for a workaround.

     -u, --unrestricted
	 This flag reduces the level of "smart" filtering. Repeated uses (up  to
	 3)  reduces the filtering even more. When repeated three times, ripgrep
	 will search every file in a directory tree.

	 A single -u/--unrestricted  flag  is  equivalent  to  --no-ignore.  Two
	 -u/--unrestricted  flags  is  equivalent  to  --no-ignore  -./--hidden.
	 Three -u/--unrestricted flags is equivalent to --no-ignore  -./--hidden
	 --binary.

	 The  only  filtering  ripgrep	still does when -uuu is given is to skip
	 symbolic links and to avoid printing matches from  binary  files.  Sym-
	 bolic	links can be followed via the -L/--follow flag, and binary files
	 can be treated as text files via the -a/--text flag.

   OUTPUT OPTIONS
     -A NUM, --after-context=NUM
	 Show NUM lines after each match.

	 This  overrides  the  --passthru  flag  and  partially  overrides   the
	 -C/--context flag.

     -B NUM, --before-context=NUM
	 Show NUM lines before each match.

	 This	overrides  the	--passthru  flag  and  partially  overrides  the
	 -C/--context flag.

     --block-buffered
	 When enabled, ripgrep will use block buffering.  That	is,  whenever  a
	 matching  line  is found, it will be written to an in-memory buffer and
	 will not be written to stdout until the buffer reaches a certain  size.
	 This  is  the default when ripgrep's stdout is redirected to a pipeline
	 or a file. When ripgrep's stdout is connected to a tty, line  buffering
	 will  be  used  by  default. Forcing block buffering can be useful when
	 dumping a large amount of contents to a tty.

	 This overrides the --line-buffered flag.

	 This flag can be disabled with --no-block-buffered.

     -b, --byte-offset
	 Print the 0-based byte offset within the input file before each line of
	 output.  If -o/--only-matching is specified, print the  offset  of  the
	 matched text itself.

	 If  ripgrep  does  transcoding, then the byte offset is in terms of the
	 result of transcoding and not the original data. This applies similarly
	 to other transformations on the data, such as decompression or a  --pre
	 filter.

	 This flag can be disabled with --no-byte-offset.

     --color=WHEN
	 This  flag  controls  when  to use colors. The default setting is auto,
	 which means ripgrep will try to guess when to use colors. For	example,
	 if  ripgrep is printing to a tty, then it will use colors, but if it is
	 redirected to a file or a pipe, then it will suppress color output.

	 ripgrep will suppress color output by default	in  some  other  circum-
	 stances as well. These include, but are not limited to:

	 *  When the TERM environment variable is not set or set to dumb.

	 *  When the NO_COLOR environment variable is set (regardless of value).

	 *  When  flags  that  imply  no  use for colors are given. For example,
	    --vimgrep and --json.

	 The possible values for this flag are:

	 never	   Colors will never be used.

	 auto	   The default. ripgrep tries to be smart.

	 always    Colors will always be used  regardless  of  where  output  is
		   sent.

	 ansi	   Like 'always', but emits ANSI escapes (even in a Windows con-
		   sole).

	 This  flag  also  controls whether hyperlinks are emitted. For example,
	 when a hyperlink format is specified, hyperlinks  won't  be  used  when
	 color	is  suppressed.  If  one wants to emit hyperlinks but no colors,
	 then one must use the --colors flag to manually set all color styles to
	 none:

	     --colors 'path:none' \
	     --colors 'line:none' \
	     --colors 'column:none' \
	     --colors 'match:none' \
	     --colors 'highlight:none'

     --colors=COLOR_SPEC
	 This flag specifies color settings for use in the output. This flag may
	 be provided multiple times. Settings are applied  iteratively.  Pre-ex-
	 isting  color	labels	are  limited to one of eight choices: red, blue,
	 green, cyan, magenta, yellow, white and black. Styles	are  limited  to
	 nobold,  bold,  nointense, intense, nounderline, underline, noitalic or
	 italic.

	 The format of the flag is {type}:{attribute}:{value}.	type  should  be
	 one  of path, line, column, highlight or match. attribute can be fg, bg
	 or style. value is either a color (for fg and bg) or a  text  style.  A
	 special format, {type}:none, will clear all color settings for type.

	 For  example,	the following command will change the match color to ma-
	 genta and the background color for line numbers to yellow:

	     rg --colors 'match:fg:magenta' --colors 'line:bg:yellow'

	 Another example, the following command will "highlight" the  non-match-
	 ing text in matching lines:

	     rg --colors 'highlight:bg:yellow' --colors 'highlight:fg:black'

	 The  "highlight"  color  type	is  particularly  useful for contrasting
	 matching lines with surrounding context printed by the -B/--before-con-
	 text, -A/--after-context, -C/--context or --passthru flags.

	 Extended colors can be used for value when the tty supports ANSI  color
	 sequences. These are specified as either x (256-color) or x,x,x (24-bit
	 truecolor)  where  x  is a number between 0 and 255 inclusive. x may be
	 given as a normal decimal number or a hexadecimal number, which is pre-
	 fixed by 0x.

	 For example, the following command will  change  the  match  background
	 color to that represented by the rgb value (0,128,255):

	     rg --colors 'match:bg:0,128,255'

	 or, equivalently,

	     rg --colors 'match:bg:0x0,0x80,0xFF'

	 Note  that  the  intense  and nointense styles will have no effect when
	 used alongside these extended color codes.

     --column
	 Show column numbers (1-based). This only shows the column  numbers  for
	 the first match on each line. This does not try to account for Unicode.
	 One byte is equal to one column. This implies -n/--line-number.

	 When -o/--only-matching is used, then the column numbers written corre-
	 spond to the start of each match.

	 This flag can be disabled with --no-column.

     -C NUM, --context=NUM
	 Show  NUM lines before and after each match. This is equivalent to pro-
	 viding both the -B/--before-context and -A/--after-context  flags  with
	 the same value.

	 This overrides the --passthru flag. The -A/--after-context and -B/--be-
	 fore-context flags both partially override this flag, regardless of the
	 order. For example, -A2 -C1 is equivalent to -A2 -B1.

     --context-separator=SEPARATOR
	 The string used to separate non-contiguous context lines in the output.
	 This  is  only  used  when  one  of the context flags is used (that is,
	 -A/--after-context, -B/--before-context or  -C/--context).  Escape  se-
	 quences like \x7F or \t may be used. The default value is --.

	 When the context separator is set to an empty string, then a line break
	 is  still  inserted.  To completely disable context separators, use the
	 --no-context-separator flag.

     --field-context-separator=SEPARATOR
	 Set the field context separator.  This  separator  is	only  used  when
	 printing  contextual lines. It is used to delimit file paths, line num-
	 bers, columns and the contextual line itself. The separator may be  any
	 number  of  bytes, including zero. Escape sequences like \x7F or \t may
	 be used.

	 The - character is the default value.

     --field-match-separator=SEPARATOR
	 Set the field match separator. This separator is only used when  print-
	 ing  matching	lines.	It  is used to delimit file paths, line numbers,
	 columns and the matching line itself. The separator may be  any  number
	 of  bytes,  including	zero.	Escape	sequences like \x7F or \t may be
	 used.

	 The : character is the default value.

     --heading
	 This flag prints the file path above clusters of matches from each file
	 instead of printing the file path as a prefix for each matched line.

	 This is the default mode when printing to a tty.

	 When stdout is not a tty, then ripgrep will  default  to  the	standard
	 grep-like  format.  One can force this format in Unix-like environments
	 by piping the output of ripgrep to cat. For example, rg foo | cat.

	 This flag can be disabled with --no-heading.

     -h, --help
	 This flag prints the help output for ripgrep.

	 Unlike most other flags, the behavior of the short flag,  -h,	and  the
	 long  flag,  --help, is different. The short flag will show a condensed
	 help output while the long flag will show a verbose  help  output.  The
	 verbose  help output has complete documentation, where as the condensed
	 help output will show only a single line for every flag.

     --hostname-bin=COMMAND
	 This flag controls how ripgrep determines this system's  hostname.  The
	 flag's value should correspond to an executable (either a path or some-
	 thing	that  can be found via your system's PATH environment variable).
	 When set, ripgrep will run this  executable,  with  no  arguments,  and
	 treat	its  output  (with  leading and trailing whitespace stripped) as
	 your system's hostname.

	 When not set (the default, or the empty string), ripgrep  will  try  to
	 automatically	detect your system's hostname. On Unix, this corresponds
	 to calling gethostname. On Windows, this corresponds to calling GetCom-
	 puterNameExW to fetch the system's "physical DNS hostname."

	 ripgrep uses your system's hostname for producing hyperlinks.

     --hyperlink-format=FORMAT
	 Set the format of hyperlinks to use when printing  results.  Hyperlinks
	 make  certain	elements of ripgrep's output, such as file paths, click-
	 able. This generally only works  in  terminal	emulators  that  support
	 OSC-8 hyperlinks. For example, the format file://{host}{path} will emit
	 an  RFC  8089 hyperlink.  To see the format that ripgrep is using, pass
	 the --debug flag.

	 Alternatively, a format string may correspond to one of  the  following
	 aliases:  default,  none, cursor, file, grep+, kitty, macvim, textmate,
	 vscode, vscode-insiders, vscodium.  The alias will be replaced  with  a
	 format  string  that is intended to work for the corresponding applica-
	 tion.

	 The following variables are available in the format string:

	 {path}      Required. This is replaced with a path to a matching  file.
		     The  path	is guaranteed to be absolute and percent encoded
		     such that it is valid to put into a URI. Note that  a  path
		     is guaranteed to start with a /.

	 {host}      Optional.	This is replaced with your system's hostname. On
		     Unix, this corresponds to calling gethostname. On	Windows,
		     this corresponds to calling GetComputerNameExW to fetch the
		     system's "physical DNS hostname." Alternatively, if --host-
		     name-bin  was provided, then the hostname returned from the
		     output of that program will be  returned.	If  no	hostname
		     could  be	found,	then  this variable is replaced with the
		     empty string.

	 {line}      Optional. If appropriate, this is replaced  with  the  line
		     number  of a match. If no line number is available (for ex-
		     ample, if --no-line-number was given), then it is automati-
		     cally replaced with the value 1.

	 {column}    Optional, but requires the presence of {line}. If appropri-
		     ate, this is replaced with the column number of a match. If
		     no column number is available (for example, if  --no-column
		     was  given),  then  it  is  automatically replaced with the
		     value 1.

	 {wslprefix}
		     Optional.	This  is  a  special  value  that  is	set   to
		     wsl$/WSL_DISTRO_NAME,  where WSL_DISTRO_NAME corresponds to
		     the value of the equivalent environment  variable.  If  the
		     system  is  not  Unix or if the WSL_DISTRO_NAME environment
		     variable is not set, then this is replaced with  the  empty
		     string.

	 A  format  string may be empty. An empty format string is equivalent to
	 the none alias. In this case, hyperlinks will be disabled.

	 At present, ripgrep does not enable hyperlinks by default.  Users  must
	 opt into them. If you aren't sure what format to use, try default.

	 Like  colors,	when  ripgrep  detects that stdout is not connected to a
	 tty, then hyperlinks are  automatically  disabled,  regardless  of  the
	 value	of  this flag.	Users can pass --color=always to forcefully emit
	 hyperlinks.

	 Note that hyperlinks are only written when a path is also in the output
	 and colors are enabled. To write hyperlinks without colors, you'll need
	 to configure ripgrep to not colorize  anything  without  actually  dis-
	 abling all ANSI escape codes completely:

	     --colors 'path:none' \
	     --colors 'line:none' \
	     --colors 'column:none' \
	     --colors 'match:none'

	 ripgrep  works  this  way because it treats the --color flag as a proxy
	 for whether ANSI escape codes should be used at all.  This  means  that
	 environment  variables  like  NO_COLOR=1 and TERM=dumb not only disable
	 colors, but hyperlinks as well. Similarly, colors  and  hyperlinks  are
	 disabled  when  ripgrep is not writing to a tty. (Unless one forces the
	 issue by setting --color=always.)

	 If you're searching a file directly, for example:

	     rg foo path/to/file

	 then hyperlinks will not be emitted since the path given does	not  ap-
	 pear in the output. To make the path appear, and thus also a hyperlink,
	 use the -H/--with-filename flag.

	 For   more  information  on  hyperlinks  in  terminal	emulators,  see:
	 https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda

     --include-zero
	 When used with -c/--count or --count-matches, this  causes  ripgrep  to
	 print	the  number  of  matches  for  each file even if there were zero
	 matches. This is disabled by default but can be enabled to make ripgrep
	 behave more like grep.

	 This flag can be disabled with --no-include-zero.

     --line-buffered
	 When enabled, ripgrep will always use line buffering. That is, whenever
	 a matching line is found, it will be  flushed	to  stdout  immediately.
	 This  is  the	default when ripgrep's stdout is connected to a tty, but
	 otherwise, ripgrep will use block buffering, which is typically faster.
	 This flag forces ripgrep to use line buffering even if it would  other-
	 wise  use block buffering. This is typically useful in shell pipelines,
	 for example:

	     tail -f something.log | rg foo --line-buffered | rg bar

	 This overrides the --block-buffered flag.

	 This flag can be disabled with --no-line-buffered.

     -n, --line-number
	 Show line numbers (1-based).

	 This is enabled by default when stdout is connected to a tty.

	 This flag can be disabled by -N/--no-line-number.

     -N, --no-line-number
	 Suppress line numbers.

	 Line numbers are off by default when stdout is not connected to a tty.

	 Line numbers can be forcefully turned on by -n/--line-number.

     -M NUM, --max-columns=NUM
	 When given, ripgrep will omit lines longer than this  limit  in  bytes.
	 Instead of printing long lines, only the number of matches in that line
	 is printed.

	 When this flag is omitted or is set to 0, then it has no effect.

     --max-columns-preview
	 Prints a preview for lines exceeding the configured max column limit.

	 When  the  -M/--max-columns  flag is used, ripgrep will by default com-
	 pletely replace any line that is too long  with  a  message  indicating
	 that  a  matching  line  was  removed.  When this flag is combined with
	 -M/--max-columns, a preview of the line  (corresponding  to  the  limit
	 size)	is shown instead, where the part of the line exceeding the limit
	 is not shown.

	 If the -M/--max-columns flag is not set, then this has no effect.

	 This flag can be disabled with --no-max-columns-preview.

     -0, --null
	 Whenever a file path is printed, follow it with a NUL	byte.  This  in-
	 cludes  printing file paths before matches, and when printing a list of
	 matching files such as  with  -c/--count,  -l/--files-with-matches  and
	 --files. This option is useful for use with xargs.

     -o, --only-matching
	 Print	only the matched (non-empty) parts of a matching line, with each
	 such part on a separate output line.

     --path-separator=SEPARATOR
	 Set the path separator to use when printing file paths.  This	defaults
	 to your platform's path separator, which is / on Unix and \ on Windows.
	 This  flag  is intended for overriding the default when the environment
	 demands it (e.g., cygwin). A path separator  is  limited  to  a  single
	 byte.

	 Setting  this	flag to an empty string reverts it to its default behav-
	 ior. That is, the path separator is automatically chosen based  on  the
	 environment.

     --passthru
	 Print both matching and non-matching lines.

	 Another way to achieve a similar effect is by modifying your pattern to
	 match the empty string. For example, if you are searching using rg foo,
	 then  using  rg  '^|foo'  instead  will  emit	every line in every file
	 searched, but only occurrences of foo will be highlighted.   This  flag
	 enables the same behavior without needing to modify the pattern.

	 An alternative spelling for this flag is --passthrough.

	 This	overrides  the	-C/--context,  -A/--after-context  and	-B/--be-
	 fore-context flags.

     -p, --pretty
	 This is a convenience alias for --color=always --heading --line-number.
	 This flag is useful when you still want pretty output	even  if  you're
	 piping  ripgrep  to  another  program or file. For example: rg -p foo |
	 less -R.

     -q, --quiet
	 Do not print anything to stdout. If a match is found in  a  file,  then
	 ripgrep  will	stop searching. This is useful when ripgrep is used only
	 for its exit code (which will be  an  error  code  if	no  matches  are
	 found).

	 When --files is used, ripgrep will stop finding files after finding the
	 first file that does not match any ignore rules.

     -r REPLACEMENT, --replace=REPLACEMENT
	 Replaces every match with the text given when printing results. Neither
	 this flag nor any other ripgrep flag will modify your files.

	 Capture  group  indices (e.g., $5) and names (e.g., $foo) are supported
	 in the replacement string. Capture group indices are numbered based  on
	 the  position	of the opening parenthesis of the group, where the left-
	 most such group is $1. The special $0 group corresponds to  the  entire
	 match.

	 The  name of a group is formed by taking the longest string of letters,
	 numbers and underscores (i.e. [_0-9A-Za-z]) after the $.  For	example,
	 $1a will be replaced with the group named 1a, not the group at index 1.
	 If the group's name contains characters that aren't letters, numbers or
	 underscores,  or  you want to immediately follow the group with another
	 string, the name should be put inside braces. For example,  ${1}a  will
	 take the content of the group at index 1 and append a to the end of it.

	 If an index or name does not refer to a valid capture group, it will be
	 replaced with an empty string.

	 In  shells  such as Bash and zsh, you should wrap the pattern in single
	 quotes instead of double quotes. Otherwise, capture group indices  will
	 be  replaced  by  expanded  shell  variables  which will most likely be
	 empty.

	 To write a literal $, use $$.

	 Note that the replacement by default replaces each match, and	not  the
	 entire  line.	To  replace the entire line, you should match the entire
	 line.

	 This flag can be used with the -o/--only-matching flag.

     --sort=SORTBY
	 This flag enables sorting of results in ascending order.  The	possible
	 values for this flag are:

	 none	     (Default)	Do  not  sort  results.  Fastest.  Can be multi-
		     threaded.

	 path	     Sort by file path. Always single-threaded. The order is de-
		     termined by sorting files in each	directory  entry  during
		     traversal.  This means that given the files a/b and a+, the
		     latter will sort after the former even though + would  nor-
		     mally sort before /.

	 modified    Sort  by  the  last modified time on a file. Always single-
		     threaded.

	 accessed    Sort by the last accessed time on a  file.  Always  single-
		     threaded.

	 created     Sort  by  the  creation  time  on	a  file.  Always single-
		     threaded.

	 If the chosen (manually or by-default) sorting criteria isn't available
	 on your system (for example, creation time is	not  available	on  ext4
	 file systems), then ripgrep will attempt to detect this, print an error
	 and exit without searching.

	 To  sort  results in reverse or descending order, use the --sortr flag.
	 Also, this flag overrides --sortr.

	 Note that sorting results currently always forces  ripgrep  to  abandon
	 parallelism and run in a single thread.

     --sortr=SORTBY
	 This  flag enables sorting of results in descending order. The possible
	 values for this flag are:

	 none	     (Default) Do not  sort  results.  Fastest.  Can  be  multi-
		     threaded.

	 path	     Sort by file path. Always single-threaded. The order is de-
		     termined  by  sorting  files in each directory entry during
		     traversal. This means that given the files a/b and a+,  the
		     latter will sort before the former even though + would nor-
		     mally sort after / when doing a reverse lexicographic sort.

	 modified    Sort  by  the  last modified time on a file. Always single-
		     threaded.

	 accessed    Sort by the last accessed time on a  file.  Always  single-
		     threaded.

	 created     Sort  by  the  creation  time  on	a  file.  Always single-
		     threaded.

	 If the chosen (manually or by-default) sorting criteria isn't available
	 on your system (for example, creation time is	not  available	on  ext4
	 file systems), then ripgrep will attempt to detect this, print an error
	 and exit without searching.

	 To  sort  results  in	ascending order, use the --sort flag. Also, this
	 flag overrides --sort.

	 Note that sorting results currently always forces  ripgrep  to  abandon
	 parallelism and run in a single thread.

     --trim
	 When  set,  all  ASCII whitespace at the beginning of each line printed
	 will be removed.

	 This flag can be disabled with --no-trim.

     --vimgrep
	 This flag instructs ripgrep to print results with every  match  on  its
	 own line, including line numbers and column numbers.

	 With  this  option,  a line with more than one match will be printed in
	 its entirety more than once. For that reason, the total amount of  out-
	 put as a result of this flag can be quadratic in the size of the input.
	 For  example,	if the pattern matches every byte in an input file, then
	 each line will be repeated for every byte  matched.  For  this  reason,
	 users	should	only use this flag when there is no other choice. Editor
	 integrations should prefer some other way of reading results from  rip-
	 grep, such as via the --json flag.  One alternative to avoiding exorbi-
	 tant  memory  usage  is to force ripgrep into single threaded mode with
	 the -j/--threads flag. Note though that this will not impact the  total
	 size of the output, just the heap memory that ripgrep will use.

     -H, --with-filename
	 This  flag  instructs	ripgrep to print the file path for each matching
	 line.	This is the default when more than  one  file  is  searched.  If
	 --heading  is	enabled  (the  default when printing to a tty), the file
	 path will be shown above clusters of matches from each file; otherwise,
	 the file name will be shown as a prefix for each matched line.

	 This flag overrides -I/--no-filename.

     -I, --no-filename
	 This flag instructs ripgrep to never print  the  file	path  with  each
	 matching  line.  This	is  the  default  when ripgrep is explicitly in-
	 structed to search one file or stdin.

	 This flag overrides -H/--with-filename.

     --sort-files
	 DEPRECATED. Use --sort=path instead.

	 This flag instructs ripgrep to sort search results by file path lexico-
	 graphically in ascending order. Note that this currently  disables  all
	 parallelism and runs search in a single thread.

	 This flag overrides --sort and --sortr.

	 This flag can be disabled with --no-sort-files.

   OUTPUT MODES
     -c, --count
	 This  flag  suppresses normal output and shows the number of lines that
	 match the given patterns for each file searched. Each file containing a
	 match has its path and count printed on each  line.  Note  that  unless
	 -U/--multiline  is enabled and the pattern(s) given can match over mul-
	 tiple lines, this reports the number of lines that match  and	not  the
	 total	number	of  matches. When multiline mode is enabled and the pat-
	 tern(s) given can match over multiple lines, -c/--count  is  equivalent
	 to --count-matches.

	 If only one file is given to ripgrep, then only the count is printed if
	 there	is  a  match.  The  -H/--with-filename flag can be used to force
	 printing the file path in this case. If you need a count to be  printed
	 regardless of whether there is a match, then use --include-zero.

	 Note  that  it  is  possible for this flag to have results inconsistent
	 with the output of -l/--files-with-matches. Notably, by  default,  rip-
	 grep  tries  to avoid searching files with binary data. With this flag,
	 ripgrep needs to search the entire content of files, which may  include
	 binary data. But with -l/--files-with-matches, ripgrep can stop as soon
	 as  a match is observed, which may come well before any binary data. To
	 avoid this inconsistency without disabling binary  detection,	use  the
	 --binary flag.

	 This  overrides  the --count-matches flag. Note that when -c/--count is
	 combined  with  -o/--only-matching,  then   ripgrep   behaves	 as   if
	 --count-matches was given.

     --count-matches
	 This  flag  suppresses normal output and shows the number of individual
	 matches of the given patterns for each file searched.	Each  file  con-
	 taining matches has its path and match count printed on each line. Note
	 that  this  reports  the total number of individual matches and not the
	 number of lines that match.

	 If only one file is given to ripgrep, then only the count is printed if
	 there is a match. The -H/--with-filename flag	can  be  used  to  force
	 printing the file path in this case.

	 This  overrides  the -c/--count flag. Note that when -c/--count is com-
	 bined	 with	-o/--only-matching,   then   ripgrep   behaves	 as   if
	 --count-matches was given.

     -l, --files-with-matches
	 Print	only  the  paths with at least one match and suppress match con-
	 tents.

	 Note that it is possible for this flag  to  have  results  inconsistent
	 with  the  output  of -c/--count. Notably, by default, ripgrep tries to
	 avoid searching files with binary data. With this flag,  ripgrep  might
	 stop searching before the binary data is observed. But with -c/--count,
	 ripgrep has to search the entire contents to determine the match count,
	 which	means  it might see binary data that causes it to skip searching
	 that file. To avoid this inconsistency without disabling binary  detec-
	 tion, use the --binary flag.

	 This overrides --files-without-match.

     --files-without-match
	 Print the paths that contain zero matches and suppress match contents.

	 This overrides -l/--files-with-matches.

     --json
	 Enable printing results in a JSON Lines format.

	 When  this  flag is provided, ripgrep will emit a sequence of messages,
	 each encoded as a JSON object, where there are five  different  message
	 types:

	 begin	     A	message that indicates a file is being searched and con-
		     tains at least one match.

	 end	     A message the indicates a file is done being searched. This
		     message also include summary statistics  about  the  search
		     for a particular file.

	 match	     A	message  that indicates a match was found. This includes
		     the text and offsets of the match.

	 context     A message that indicates a contextual line was found.  This
		     includes  the text of the line, along with any match infor-
		     mation if the search was inverted.

	 summary     The final message emitted by ripgrep that contains  summary
		     statistics about the search across all files.

	 Since	file  paths  or  the  contents of files are not guaranteed to be
	 valid UTF-8 and JSON itself must be representable by a  Unicode  encod-
	 ing,  ripgrep	will  emit  all data elements as objects with one of two
	 keys: text or bytes. text is a normal JSON  string  when  the	data  is
	 valid UTF-8 while bytes is the base64 encoded contents of the data.

	 The  JSON Lines format is only supported for showing search results. It
	 cannot be used with other flags that emit other types of  output,  such
	 as  --files, -l/--files-with-matches, --files-without-match, -c/--count
	 or --count-matches. ripgrep will report an error if any of  the  afore-
	 mentioned flags are used in concert with --json.

	 Other	flags  that  control  aspects  of  the	standard  output such as
	 -o/--only-matching, --heading,  -r/--replace,	-M/--max-columns,  etc.,
	 have  no  effect when --json is set. However, enabling JSON output will
	 always implicitly and unconditionally enable --stats.

	 A more complete description of the JSON format used can be found  here:
	 https://docs.rs/grep-printer/*/grep_printer/struct.JSON.html.

	 This flag can be disabled with --no-json.

   LOGGING OPTIONS
     --debug
	 Show debug messages. Please use this when filing a bug report.

	 The  --debug  flag  is  generally  useful  for figuring out why ripgrep
	 skipped searching a particular file. The debug messages should  mention
	 all files skipped and why they were skipped.

	 To  get  even	more  debug  output, use the --trace flag, which implies
	 --debug along with additional trace data.

     --no-ignore-messages
	 When this flag is enabled, all error messages related to parsing ignore
	 files are suppressed. By default, error messages are printed to stderr.
	 In cases where these errors are expected, this  flag  can  be	used  to
	 avoid seeing the noise produced by the messages.

	 This flag can be disabled with --ignore-messages.

     --no-messages
	 This  flag  suppresses  some error messages. Specifically, messages re-
	 lated to the failed opening and reading of files.  Error  messages  re-
	 lated to the syntax of the pattern are still shown.

	 This flag can be disabled with --messages.

     --stats
	 When enabled, ripgrep will print aggregate statistics about the search.
	 When  this  flag  is present, ripgrep will print at least the following
	 stats to stdout at the end of the search: number of matched lines, num-
	 ber of files with matches, number of files searched, and the time taken
	 for the entire search to complete.

	 This set of aggregate statistics may expand over time.

	 This flag is always and implicitly enabled when --json is used.

	 Note that this flag has no effect if  --files,  -l/--files-with-matches
	 or --files-without-match is passed.

	 This flag can be disabled with --no-stats.

     --trace
	 Show trace messages. This shows even more detail than the --debug flag.
	 Generally,  one should only use this if --debug doesn't emit the infor-
	 mation you're looking for.

   OTHER BEHAVIORS
     --files
	 Print each file that would be searched without actually performing  the
	 search.  This is useful to determine whether a particular file is being
	 searched or not.

	 This overrides --type-list.

     --generate=KIND
	 This  flag  instructs	ripgrep  to generate some special kind of output
	 identified by KIND and then quit without searching. KIND can be one  of
	 the following values:

	 man		Generates a manual page for ripgrep in the roff format.

	 complete-bash	Generates a completion script for the bash shell.

	 complete-zsh	Generates a completion script for the zsh shell.

	 complete-fish	Generates a completion script for the fish shell.

	 complete-powershell
			Generates a completion script for PowerShell.

	 The output is written to stdout. The list above may expand over time.

     --no-config
	 When  set,  ripgrep will never read configuration files. When this flag
	 is present, ripgrep will not respect the  RIPGREP_CONFIG_PATH	environ-
	 ment variable.

	 If  ripgrep  ever  grows  a feature to automatically read configuration
	 files in pre-defined locations, then this flag will also  disable  that
	 behavior as well.

     --pcre2-version
	 When  this  flag is present, ripgrep will print the version of PCRE2 in
	 use, along with other information, and  then  exit.  If  PCRE2  is  not
	 available,  then  ripgrep  will print an error message and exit with an
	 error code.

     --type-list
	 Show all supported file types and their corresponding globs. This takes
	 any --type-add and --type-clear flags given into account. Each type  is
	 printed  on  its  own	line, followed by a : and then a comma-delimited
	 list of globs for that type on the same line.

     -V, --version
	 This flag prints ripgrep's version. This also may print other	relevant
	 information,  such as the presence of target specific optimizations and
	 the git revision that this build of ripgrep was compiled from.

EXIT STATUS
     If ripgrep finds a match, then the exit status of the program is 0.  If  no
     match could be found, then the exit status is 1. If an error occurred, then
     the exit status is always 2 unless ripgrep was run with the -q/--quiet flag
     and a match was found. In summary:

     *	0  exit  status occurs only when at least one match was found, and if no
	error occurred, unless -q/--quiet was given.

     *	1 exit status occurs only when no match was found and no error occurred.

     *	2 exit status occurs when an error occurred. This is true for both cata-
	strophic errors (e.g., a regex syntax error) and for soft errors  (e.g.,
	unable to read a file).

AUTOMATIC FILTERING
     ripgrep does a fair bit of automatic filtering by default. This section de-
     scribes that filtering and how to control it.

     TIP: To disable automatic filtering, use rg -uuu.

     ripgrep's automatic "smart" filtering is one of the most apparent differen-
     tiating  features	between  ripgrep and other tools like grep. As such, its
     behavior may be surprising to users that aren't expecting it.

     ripgrep does four types of filtering automatically:

     1. Files and directories that match ignore rules are not searched.

     2. Hidden files and directories are not searched.

     3. Binary files (files with a NUL byte) are not searched.

     4. Symbolic links are not followed.

     The first type of filtering is the most sophisticated. ripgrep will attempt
     to respect your gitignore rules as faithfully as possible.  In  particular,
     this includes the following:

     *	Any global rules, e.g., in $HOME/.config/git/ignore.

     *	Any  rules  in relevant .gitignore files. This includes .gitignore files
	in parent directories that are part of the same git repository.  (Unless
	--no-require-git is given.)

     *	Any local rules, e.g., in .git/info/exclude.

     In some cases, ripgrep and git will not always be in sync in terms of which
     files are ignored. For example, a file that is ignored via  .gitignore  but
     is  tracked  by git would not be searched by ripgrep even though git tracks
     it. This is unlikely to ever be fixed. Instead, you should either make sure
     your exclude rules match the files you track precisely,  or  otherwise  use
     git grep for search.

     Additional ignore rules can be provided outside of a git context:

     *	Any  rules in .ignore. ripgrep will also respect .ignore files in parent
	directories.

     *	Any rules in .rgignore. ripgrep will also  respect  .rgignore  files  in
	parent directories.

     *	Any rules in files specified with the --ignore-file flag.

     The  precedence  of ignore rules is as follows, with later items overriding
     earlier items:

     *	Files given by --ignore-file.

     *	Global gitignore rules, e.g., from $HOME/.config/git/ignore.

     *	Local rules from .git/info/exclude.

     *	Rules from .gitignore.

     *	Rules from .ignore.

     *	Rules from .rgignore.

     So for example, if foo were in a .gitignore and !foo were in an  .rgignore,
     then foo would not be ignored since .rgignore takes precedence over .gitig-
     nore.

     Each of the types of filtering can be configured via command line flags:

     *	There  are several flags starting with --no-ignore that toggle which, if
	any, ignore rules are respected. --no-ignore by itself will disable  all
	of them.

     *	-./--hidden will force ripgrep to search hidden files and directories.

     *	--binary will force ripgrep to search binary files.

     *	-L/--follow will force ripgrep to follow symlinks.

     As  a  special  short hand, the -u flag can be specified up to three times.
     Each additional time incrementally decreases filtering:

     *	-u is equivalent to --no-ignore.

     *	-uu is equivalent to --no-ignore --hidden.

     *	-uuu is equivalent to --no-ignore --hidden --binary.

     In particular, rg -uuu should search the same exact content as grep -r.

CONFIGURATION FILES
     ripgrep supports reading configuration files that change ripgrep's  default
     behavior. The format of the configuration file is an "rc" style and is very
     simple. It is defined by two rules:

     1. Every line is a shell argument, after trimming whitespace.

     2. Lines  starting with # (optionally preceded by any amount of whitespace)
	are ignored.

     ripgrep will look for a single configuration file if and only if  the  RIP-
     GREP_CONFIG_PATH  environment  variable  is  set and is non-empty.  ripgrep
     will parse arguments from this file on startup and will behave  as  if  the
     arguments	in  this  file were prepended to any explicit arguments given to
     ripgrep on the command line. Note though that the rg command you  run  must
     still be valid. That is, it must always contain at least one pattern at the
     command line, even if the configuration file uses the -e/--regexp flag.

     For example, if your ripgreprc file contained a single line:

	 --smart-case

     then the following command

	 RIPGREP_CONFIG_PATH=wherever/.ripgreprc rg foo

     would behave identically to the following command:

	 rg --smart-case foo

     Another example is adding types, like so:

	 --type-add
	 web:*.{html,css,js}*

     The above would behave identically to the following command:

	 rg --type-add 'web:*.{html,css,js}*' foo

     The same applies to using globs. This:

	 --glob=!.git

     or this:

	 --glob
	 !.git

     would behave identically to the following command:

	 rg --glob '!.git' foo

     The  bottom  line is that every shell argument needs to be on its own line.
     So for example, a config file containing

	 -j 4

     is probably not doing what you intend. Instead, you want

	 -j
	 4

     or

	 -j4

     ripgrep also provides a flag, --no-config, that when present will	suppress
     any and all support for configuration. This includes any future support for
     auto-loading configuration files from pre-determined paths.

     Conflicts	between  configuration	files and explicit arguments are handled
     exactly like conflicts in the same command line invocation. That is, assum-
     ing your config file contains only --smart-case, then this command:

	 RIPGREP_CONFIG_PATH=wherever/.ripgreprc rg foo --case-sensitive

     is exactly equivalent to

	 rg --smart-case foo --case-sensitive

     in which case, the --case-sensitive flag would  override  the  --smart-case
     flag.

SHELL COMPLETION
     Shell  completion files are included in the release tarball for Bash, Fish,
     Zsh and PowerShell.

     For   bash,   move   rg.bash   to	  $XDG_CONFIG_HOME/bash_completion    or
     /etc/bash_completion.d/.

     For fish, move rg.fish to $HOME/.config/fish/completions.

     For zsh, move _rg to one of your $fpath directories.

CAVEATS
     ripgrep may abort unexpectedly when using default settings if it searches a
     file  that  is  simultaneously  truncated.  This behavior can be avoided by
     passing the --no-mmap flag which will forcefully disable the use of  memory
     maps in all cases.

     ripgrep  may  use	a  large  amount  of  memory depending on a few factors.
     Firstly, if ripgrep uses parallelism for search (the default), then the en-
     tire output for each individual file is buffered into memory  in  order  to
     prevent  interleaving matches in the output. To avoid this, you can disable
     parallelism with the -j1 flag. Secondly, ripgrep always needs  to	have  at
     least  a  single line in memory in order to execute a search. A file with a
     very long line can thus cause ripgrep to use a lot  of  memory.  Generally,
     this  only  occurs  when  searching binary data with the -a/--text flag en-
     abled. (When the -a/--text flag isn't enabled, ripgrep will replace all NUL
     bytes with line terminators, which typically prevents exorbitant memory us-
     age.) Thirdly, when ripgrep searches a large file using a memory  map,  the
     process  will  likely  report  its resident memory usage as the size of the
     file. However, this does not mean ripgrep actually needed to use that  much
     heap memory; the operating system will generally handle this for you.

VERSION
     15.2.0

HOMEPAGE
     https://github.com/BurntSushi/ripgrep

     Please  report  bugs  and	feature requests to the issue tracker. Please do
     your best to provide a reproducible test case for bugs. This should include
     the corpus being searched, the rg command, the actual output  and	the  ex-
     pected  output.  Please also include the output of running the same rg com-
     mand but with the --debug flag.

     If you have questions that don't obviously fall into the "bug" or	"feature
     request"  category, then they are welcome in the Discussions section of the
     issue tracker: https://github.com/BurntSushi/ripgrep/discussions.

AUTHORS
     Andrew Gallant <jamslam@gmail.com>

15.2.0				   2026-07-15				   RG(1)

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

home | help