(but still skip directories like blib, CVS , etc.) -A NUM , --after-context= NUM Print NUM lines of trailing context after matching lines. -B NUM , --before-context= NUM Print NUM lines of leading context before matching lines. -C [ NUM ], --context[= NUM ] Print NUM lines (default 2) of context around matching lines. -c, --count Suppress normal output; instead print a count of matching lines for each input file. If -l is in effect, it will only show the number of lines for each file that has lines matching. Without -l, some line counts may be zeroes. If combined with -h (--no-filename) ack outputs only one total count. --color, --nocolor --color highlights the matching text. --nocolor supresses the color. This is on by default unless the output is redirected. On Windows, this option is off by default unless the Win32::Console::ANSI module is installed or the "ACK_PAGER_COLOR" environment variable is used. --color-filename=color Sets the color to be used for filenames. --color-match=color Sets the color to be used for matches. --color-lineno=color Sets the color to be used for line numbers. --column Show the column number of the first match. This is helpful for editors that can place your cursor at a given position. --env, --noenv --noenv disables all environment processing. No .ackrc is read and all environment variables are ignored. By default, ack considers .ackrc and settings in the environment. --flush --flush flushes output immediately. This is off by default unless ack is running interactively (when output goes to a pipe or file). -f Only print the files that would be searched, without actually doing any searching. PATTERN must not be specified, or it will be taken as a path to search. --follow, --nofollow Follow or don't follow symlinks, other than whatever starting files or directories were specified on the command line. This is off by default. -G REGEX Only paths matching REGEX are included in the search. The entire path and filename are matched against REGEX , and REGEX is a Perl regular expression, not a shell glob. The options -i, -w, -v, and -Q do not apply to this REGEX . -g REGEX Print files where the relative path + filename matches REGEX . This option is a convenience shortcut for -f -G REGEX . The options -i, -w, -v, and -Q do not apply to this REGEX . --group, --nogroup --group groups matches by file name with. This is the default when used interactively. --nogroup prints one result per line, like grep. This is the default when output is redirected. -H, --with-filename Print the filename for each match. -h, --no-filename Suppress the prefixing of filenames on output when multiple files are searched. --help Print a short help statement. -i, --ignore-case Ignore case in the search strings. This applies only to the PATTERN , not to the regexes given for the -g and -G options. --[no]ignore-dir= DIRNAME Ignore directory (as CVS , .svn, etc are ignored). May be used multiple times to ignore multiple directories. For example, mason users may wish to include --ignore-dir=data. The --noignore-dir option allows users to search directories which would normally be ignored (perhaps to research the contents of .svn/props directories). The DIRNAME must always be a simple directory name. Nested directories like foo/bar are NOT supported. You would need to specify --ignore-dir=foo and then no files from any foo directory are taken into account by ack unless given explicitly on the command line. --line= NUM Only print line NUM of each file. Multiple lines can be given with multiple --line options or as a comma separated list (--line=3,5,7). --line=4-7 also works. The lines are always output in ascending order, no matter the order given on the command line. -l, --files-with-matches Only print the filenames of matching files, instead of the matching text. -L, --files-without-matches Only print the filenames of files that do NOT match. This is equivalent to specifying -l and -v. --match REGEX Specify the REGEX explicitly. This is helpful if you don't want to put the regex as your first argument, e.g. when executing multiple searches over the same set of files. # search for foo and bar in given files ack file1 t/file* --match foo ack file1 t/file* --match bar -m= NUM , --max-count= NUM Stop reading a file after NUM matches. --man Print this manual page. -n, --no-recurse No descending into subdirectories. -o Show only the part of each line matching PATTERN (turns off text highlighting) --output=expr Output the evaluation of expr for each line (turns off text highlighting) --pager=program Direct ack's output through program. This can also be specified via the "ACK_PAGER" and "ACK_PAGER_COLOR" environment variables. Using --pager does not suppress grouping and coloring like piping output on the command-line does. --passthru Prints all lines, whether or not they match the expression. Highlighting will still work, though, so it can be used to highlight matches while still seeing the entire file, as in: # Watch a log file, and highlight a certain IP address $ tail -f ~/access.log | ack --passthru 18.104.22.168 --print0 Only works in conjunction with -f, -g, -l or -c (filename output). The filenames are output separated with a null byte instead of the usual newline. This is helpful when dealing with filenames that contain whitespace, e.g. # remove all files of type html ack -f --html --print0 | xargs -0 rm -f -Q, --literal Quote all metacharacters in PATTERN , it is treated as a literal. This applies only to the PATTERN , not to the regexes given for the -g and -G options. -r, -R, --recurse Recurse into sub-directories. This is the default and just here for compatibility with grep. You can also use it for turning --no-recurse off. --smart-case, --no-smart-case Ignore case in the search strings if PATTERN contains no uppercase characters. This is similar to "smartcase" in vim. This option is off by default. -i always overrides this option. This applies only to the PATTERN , not to the regexes given for the -g and -G options. --sort-files Sorts the found files lexically. Use this if you want your file listings to be deterministic between runs of ack. --show-types Outputs the filetypes that ack associates with each file. Works with -f and -g options. --thpppt Display the all-important Bill The Cat logo. Note that the exact spelling of --thpppppt is not important. It's checked against a regular expression. --type=TYPE, --type=noTYPE Specify the types of files to include or exclude from a search. TYPE is a filetype, like perl or xml. --type=perl can also be specified as --perl, and --type=noperl can be done as --noperl. If a file is of both type "foo" and "bar", specifying --foo and --nobar will exclude the file, because an exclusion takes precedence over an inclusion. Type specifications can be repeated and are ORed together. See ack --help=types for a list of valid types. --type-add TYPE =.EXTENSION[,.EXT2[,...]] Files with the given EXTENSION (s) are recognized as being of (the existing) type TYPE . See also "Defining your own types". --type-set TYPE =.EXTENSION[,.EXT2[,...]] Files with the given EXTENSION (s) are recognized as being of type TYPE . This replaces an existing definition for type TYPE . See also "Defining your own types". -u, --unrestricted All files and directories (including blib/, core.*, ...) are searched, nothing is skipped. When both -u and --ignore-dir are used, the --ignore-dir option has no effect. -v, --invert-match Invert match: select non-matching lines This applies only to the PATTERN , not to the regexes given for the -g and -G options. --version Display version and copyright information. -w, --word-regexp Force PATTERN to match only whole words. The PATTERN is wrapped with "\b" metacharacters. This applies only to the PATTERN , not to the regexes given for the -g and -G options. -1 Stops after reporting first match of any kind. This is different from --max-count=1 or -m1, where only one match per file is shown. Also, -1 works with -f and -g, where -m does not. Sure, I could have read through the man page and viewed all the options.