NIMGREP(1)

πŸ“¦
version 2.2.12 Β· 3 versions
, in arch rolling

πŸ’– NIMGREP(1) πŸ’–

okay bestie, this is the User Commands manual page for nimgrep, and it is about to make your search-and-replace era iconic. ✨

🌸 NAME 🌸

nimgrep - Nimgrep. That's the whole name, no cap. πŸ’…

πŸ¦‹ DESCRIPTION πŸ¦‹

So this utility is literally nimgrep - Nim Grep Searching and Replacement Utility Version 2.0.0, and the copyright line is (c) 2012-2020 Andreas Rumpf. Respect the icon who made it. πŸ‘‘

Here's the usage tea β˜•:

  • ✨ To search:
nimgrep [options] PATTERN [(FILE/DIRECTORY)*/-]
  • πŸŽ€ To replace:
nimgrep [options] PATTERN --replace REPLACEMENT
(FILE/DIRECTORY)*/-
  • 🌈 To list file names:
nimgrep [options] --filenames [PATTERN] [(FILE/DIRECTORY)*]

Positional arguments, from left to right, bestie:

  1. PATTERN is either Regex (default) or Peg if --peg is specified. PATTERN and REPLACEMENT should be skipped when --stdin is specified. 🫢
  2. REPLACEMENT supports $1, $# notations for captured groups in PATTERN.
πŸ’€ DANGER: --replace mode DOES NOT ask confirmation unless --confirm is specified!
  1. Final arguments are a list of paths (FILE/DIRECTORY) or a standalone minus - or not specified (empty):
    • empty: current directory . is assumed (not with --replace)
πŸ™ˆ Note: so when no FILE/DIRECTORY/- is specified nimgrep does not read the pipe, but searches files in the current dir instead!
  • -: read buffer once from stdin: pipe or terminal input; in --replace mode the result is directed to stdout; it's not compatible with --stdin, --filenames, or --confirm πŸŒ€

For any given DIRECTORY nimgrep searches only its immediate files without traversing subdirectories unless --recursive is specified. 🌿

In replacement mode we require all 3 positional arguments to avoid damaging. πŸ›‘οΈ

✨ OPTIONS ✨

πŸŽ€ Mode of operation πŸŽ€

  • --find, -f β€” find the PATTERN (default)
  • --replace, -! β€” replace the PATTERN to REPLACEMENT, rewriting the files
  • --confirm β€” confirm each occurrence/replacement; there is a chance to abort any time without touching the file
  • --filenames β€” just list filenames. Provide a PATTERN to find it in the filenames (not in the contents of a file) or run with empty pattern to just list all files:
nimgrep --filenames
# In current dir

nimgrep --filenames "" DIRECTORY
# Note empty pattern "", lists all files in DIRECTORY

🧚 Interpret patterns 🧚

  • --peg β€” PATTERN and PAT are Peg
  • --re β€” PATTERN and PAT are regular expressions (default)
  • --rex, -x β€” use the "extended" syntax for the regular expression so that whitespace is not significant
  • --word, -w β€” matches should have word boundaries (buggy for pegs!)
  • --ignoreCase, -i β€” be case-insensitive in PATTERN and PAT
  • --ignoreStyle, -y β€” be style insensitive in PATTERN and PAT
🌟 Note: PATTERN and patterns PAT (see below in other options) are all either Regex or Peg simultaneously and options --rex, --word, --ignoreCase, and --ignoreStyle are applied to all of them.

πŸ“ File system walk πŸ“

  • --recursive, -r β€” process directories recursively
  • --follow β€” follow all symlinks when processing recursively
  • --sortTime, -s[:asc|desc] β€” order files by the last modification time (default: off): ascending (recent files go last) or descending

πŸŽ€ Filter files (based on filesystem paths) πŸŽ€

πŸ’‘ Hint: Instead of not you can type just n for negative options below.
  • --ex[tensions]:EX1|EX2|... β€” only search the files with the given extension(s), empty one (--ex) means files with missing extension
  • --notex[tensions]:EX1|EX2|... β€” exclude files having given extension(s), use empty one to skip files with no extension (like some binary files are)
  • --fi[lename]:PAT β€” search only files whose name matches pattern PAT
  • --notfi[lename]:PAT β€” skip files whose name matches pattern PAT
  • --di[rname]:PAT β€” select files that in their path have a directory name that matches pattern PAT
  • --notdi[rname]:PAT β€” do not descend into directories whose name (not path) matches pattern PAT
  • --dirp[ath]:PAT β€” select only files whose whole relative directory path matches pattern PAT
  • --notdirp[ath]:PAT β€” skip files whose whole relative directory path matches pattern PAT

🌈 Filter files (based on file contents) 🌈

  • --inF[ile]:PAT β€” select files containing a (not displayed) match of PAT
  • --notinF[ile]:PAT β€” skip files containing a match of PAT
  • --bin:on|off|only β€” process binary files? (detected by \0 in first 1K bytes) (default: on - binary and text files treated the same way)
  • --text, -t β€” process only text files, the same as --bin:off

πŸ’œ Filter matches πŸ’œ

  • --inC[ontext]:PAT β€” select only matches containing a match of PAT in their surrounding context (multiline with -c, -a, -b)
  • --notinC[ontext]:PAT β€” skip matches not containing a match of PAT in their surrounding context

πŸ‘‘ Represent results πŸ‘‘

  • --nocolor β€” output will be given without any colors
  • --color[:on] β€” force color even if output is redirected (default: auto)
  • --colorTheme:THEME β€” select color THEME from simple (default), bnw (black and white), ack, or gnu (GNU grep)
  • --count β€” only print counts of matches for files that matched
  • --context:N, -c:N β€” print N lines of leading context before every match and N lines of trailing context after it (default N: 0)
  • --afterContext:N, -a:N β€” print N lines of trailing context after every match
  • --beforeContext:N, -b:N β€” print N lines of leading context before every match
  • --group, -g β€” group matches by file
  • --newLine, -l β€” display every matching line starting from a new line
  • --cols[:N] β€” limit max displayed columns/width of output lines from files by N characters, cropping overflows (default: off)
  • --cols:auto, -% β€” calculate columns from terminal width for every line
  • --onlyAscii, -@ β€” display only printable ASCII Latin characters 0x20-0x7E substitutions: 0 -> ^@, 1 -> ^A, ... 0x1F -> ^_, 0x7F -> '7F, ..., 0xFF -> 'FF

πŸ¦‹ Miscellaneous πŸ¦‹

  • --threads:N, -j:N β€” speed up search by N additional workers (default: 0, off)
  • --stdin β€” read PATTERN from stdin (to avoid the shell's confusing quoting rules) and, if --replace given, REPLACEMENT
  • --verbose β€” be verbose: list every processed file
  • --help, -h β€” shows this help
  • --version, -v β€” shows the version

Peace out bestie πŸ’– β€” this page is from nimgrep 2.2.12, dated September 2026, and its manual is NIMGREP(1). Slay and happy grepping! ✨

πŸ“¦ where this page comes from