---
name: "hg-grep"
section: "1"
platform: "linux"
package: "mercurial"
version: "7.2.4-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/hg-grep"
---

# hg-grep(1)

search for a pattern in specified files

## NAME

hg grep - search for a pattern in specified files

## SYNOPSIS

```
hg grep [--diff] [OPTION]... PATTERN [FILE]...
```

## DESCRIPTION

Search the working directory or revision history for a regular expression in the specified files for the entire repository.

By default, grep searches the repository files in the working directory and prints the files where it finds a match. To specify historical revisions instead of the working directory, use the --rev flag.

To search instead historical revision differences that contains a change in match status ("-" for a match that becomes a non-match, or "+" for a non-match that becomes a match), use the --diff flag.

PATTERN can be any Python (roughly Perl-compatible) regular expression.

If no FILEs are specified and the --rev flag isn't supplied, all files in the working directory are searched. When using the --rev flag and specifying FILEs, use the --follow argument to also follow the specified FILEs across renames and copies.

Template:

The following keywords are supported in addition to the common template keywords and functions. See also **hg help templates**.

- **change**

  String. Character denoting insertion **+** or removal **-**. Available if **--diff** is specified.

- **lineno**

  Integer. Line number of the match.

- **path**

  String. Repository-absolute path of the file.

- **texts**

  List of text chunks.

  And each entry of **{texts}** provides the following sub-keywords.

- **matched**

  Boolean. True if the chunk matches the specified pattern.

- **text**

  String. Chunk content.

  See **hg help templates.operators** for the list expansion syntax.

  Returns 0 if a match is found, 1 otherwise.

## OPTIONS

- **-0, --print0**

  end fields with NUL

- **--all**

  an alias to --diff (DEPRECATED)

- **--diff**

  search revision differences for when the pattern was added or removed

- **-a, --text**

  treat all files as text

- **-f, --follow**

  follow changeset history, or file history across copies and renames

- **-i, --ignore-case**

  ignore case when matching

- **-l, --files-with-matches**

  print only filenames and revisions that match

- **-n, --line-number**

  print matching line numbers

- **-r,***--rev* **\<REV\[+\]\>**

  search files changed within revision range

- **--all-files**

  include all files in the changeset while grepping (DEPRECATED)

- **-u, --user**

  list the author (long with -v)

- **-d, --date**

  list the date (short with -q)

- **-T,***--template* **\<TEMPLATE\>**

  display with template

- **-I,***--include* **\<PATTERN\[+\]\>**

  include names matching the given patterns

- **-X,***--exclude* **\<PATTERN\[+\]\>**

  exclude names matching the given patterns

  \[+\] marked option can be specified multiple times
