AG(1) AG(1)
NAME
ag - The Silver Searcher. Like ack, but faster.
SYNOPSIS
ag [options] pattern [path ...]
DESCRIPTION
Recursively search for PATTERN in PATH. Like grep or ack, but faster.
OPTIONS
--ackmate
Output results in a format parseable by AckMate
https://github.com/protocool/AckMate.
--[no]affinity
Set thread affinity (if platform supports it). Default is true.
-a --all-types
Search all files. This doesn´t include hidden files, and doesn´t
respect any ignore files.
-A --after [LINES]
Print lines after match. If not provided, LINES defaults to 2.
-B --before [LINES]
Print lines before match. If not provided, LINES defaults to 2.
--[no]break
Print a newline between matches in different files. Enabled by
default.
-c --count
Only print the number of matches in each file. Note: This is the
number of matches, not the number of matching lines. Pipe output
to wc -l if you want the number of matching lines.
--[no]color
Print color codes in results. Enabled by default.
--color-line-number
Color codes for line numbers. Default is 1;33.
--color-match
Color codes for result match numbers. Default is 30;43.
--color-path
Color codes for path names. Default is 1;32.
--column
Print column numbers in results.
-C --context [LINES]
Print lines before and after matches. Default is 2.
-D --debug
Output ridiculous amounts of debugging info. Not useful unless
you´re actually debugging.
--depth NUM
Search up to NUM directories deep, -1 for unlimited. Default is
25.
--[no]filename
Print file names. Enabled by default, except when searching a
single file.
-f --[no]follow
Follow symlinks. Default is false.
-F --fixed-strings
Alias for --literal for compatibility with grep.
--[no]group
The default, --group, lumps multiple matches in the same file to-
gether, and presents them under a single occurrence of the file-
name. --nogroup refrains from this, and instead places the file-
name at the start of each match line.
-g PATTERN
Print filenames matching PATTERN.
-G --file-search-regex PATTERN
Only search files whose names match PATTERN.
-H --[no]heading
Print filenames above matching contents.
--hidden
Search hidden files. This option obeys ignored files.
--ignore PATTERN
Ignore files/directories whose names match this pattern. Literal
file and directory names are also allowed.
--ignore-dir NAME
Alias for --ignore for compatibility with ack.
-i --ignore-case
Match case-insensitively.
-l --files-with-matches
Only print the names of files containing matches, not the match-
ing lines. An empty query will print all files that would be
searched.
-L --files-without-matches
Only print the names of files that don´t contain matches.
--list-file-types
See FILE TYPES below.
-m --max-count NUM
Skip the rest of a file after NUM matches. Default is 0, which
never skips.
--[no]mmap
Toggle use of memory-mapped I/O. Defaults to true on platforms
where mmap() is faster than read(). (All but macOS.)
--[no]multiline
Match regexes across newlines. Enabled by default.
-n --norecurse
Don´t recurse into directories.
--[no]numbers
Print line numbers. Default is to omit line numbers when search-
ing streams.
-o --only-matching
Print only the matching part of the lines.
--one-device
When recursing directories, don´t scan dirs that reside on other
storage devices. This lets you avoid scanning slow network
mounts. This feature is not supported on all platforms.
-p --path-to-ignore STRING
Provide a path to a specific .ignore file.
--pager COMMAND
Use a pager such as less. Use --nopager to override. This option
is also ignored if output is piped to another program.
--parallel
Parse the input stream as a search term, not data to search. This
is meant to be used with tools such as GNU parallel. For example:
echo "foo\nbar\nbaz" | parallel "ag {} ." will run 3 instances of
ag, searching the current directory for "foo", "bar", and "baz".
--print-long-lines
Print matches on very long lines (> 2k characters by default).
--passthrough --passthru
When searching a stream, print all lines even if they don´t
match.
-Q --literal
Do not parse PATTERN as a regular expression. Try to match it
literally.
-r --recurse
Recurse into directories when searching. Default is true.
-s --case-sensitive
Match case-sensitively.
-S --smart-case
Match case-sensitively if there are any uppercase letters in PAT-
TERN, case-insensitively otherwise. Enabled by default.
--search-binary
Search binary files for matches.
--silent
Suppress all log messages, including errors.
--stats
Print stats (files scanned, time taken, etc).
--stats-only
Print stats (files scanned, time taken, etc) and nothing else.
-t --all-text
Search all text files. This doesn´t include hidden files.
-u --unrestricted
Search all files. This ignores .ignore, .gitignore, etc. It
searches binary and hidden files as well.
-U --skip-vcs-ignores
Ignore VCS ignore files (.gitignore, .hgignore), but still use
.ignore.
-v --invert-match
Match every line not containing the specified pattern.
-V --version
Print version info.
--vimgrep
Output results in the same form as Vim´s :vimgrep /pattern/g
Here is a ~/.vimrc configuration example:
set grepprg=ag\ --vimgrep\ $* set grepformat=%f:%l:%c:%m
Then use :grep to grep for something. Then use :copen, :cn, :cp,
etc. to navigate through the matches.
-w --word-regexp
Only match whole words.
--workers NUM
Use NUM worker threads. Default is the number of CPU cores, with
a max of 8.
-z --search-zip
Search contents of compressed files. Currently, gz and xz are
supported. This option requires that ag is built with lzma and
zlib.
-0 --null --print0
Separate the filenames with \0, rather than \n: this allows xargs
-0 <command> to correctly process filenames containing spaces or
newlines.
FILE TYPES
It is possible to restrict the types of files searched. For example,
passing --html will search only files with the extensions htm, html,
shtml or xhtml. For a list of supported types, run ag --list-file-types.
IGNORING FILES
By default, ag will ignore files whose names match patterns in .gitig-
nore, .hgignore, or .ignore. These files can be anywhere in the directo-
ries being searched. Binary files are ignored by default as well. Fi-
nally, ag looks in $HOME/.agignore for ignore patterns.
If you want to ignore .gitignore and .hgignore, but still take .ignore
into account, use -U.
Use the -t option to search all text files; -a to search all files; and
-u to search all, including hidden files.
EXAMPLES
ag printf: Find matches for "printf" in the current directory.
ag foo /bar/: Find matches for "foo" in path /bar/.
ag -- --foo: Find matches for "--foo" in the current directory. (As with
most UNIX command line utilities, "--" is used to signify that the re-
maining arguments should not be treated as options.)
ABOUT
ag was originally created by Geoff Greer. More information (and the lat-
est release) can be found at http://geoff.greer.fm/ag
SEE ALSO
grep(1)
December 2016 AG(1)
Generated by dwww version 1.16 on Tue Dec 16 07:04:19 CET 2025.