Flesh out README
This commit is contained in:
parent
f6cd64cf3b
commit
294a41b736
41
README.md
41
README.md
|
@ -1,3 +1,44 @@
|
||||||
# gg
|
# gg
|
||||||
|
|
||||||
Recursive grep written in Go, for everyday ease of use.
|
Recursive grep written in Go, for everyday ease of use.
|
||||||
|
|
||||||
|
`gg` is a recursive grep. Given a regexp (or fixed pattern) it will search for
|
||||||
|
the pattern recursively in the current working directory. It will print a
|
||||||
|
coloured header per file along with the matching line and pattern.
|
||||||
|
|
||||||
|
It is possible to scan specific files or directories, rather than the default
|
||||||
|
current working directory. To do this, simply specify the path(s) as arguments
|
||||||
|
following the pattern.
|
||||||
|
|
||||||
|
It is possible to scan for multiple patterns using the `-e` (or `-Q`) argument,
|
||||||
|
which can be repeated multiple times. `-e` specifies a regular expression and
|
||||||
|
`-Q` a fixed pattern. When using either flag, any non-flag arguments are treated
|
||||||
|
as paths to scan.
|
||||||
|
|
||||||
|
Search defaults to case-sensitive but the `-i` flag may be passed to make all
|
||||||
|
search terms case-insensitive. Alternatively, the `"(?i)"` construct may be added
|
||||||
|
to a regular expression to make that specific expression case insensitive.
|
||||||
|
|
||||||
|
Files and directories can be excluded with the `-x` option. This supports bash-style
|
||||||
|
globs with `'*'`, `'?'`, `'[a-z]'`, `'{this,that}'`, or `'/**/'` to match zero or more
|
||||||
|
directories. By default, `.git` and vim swap files are ignored. Similarly, `-I`
|
||||||
|
filters files to include. Examples:
|
||||||
|
|
||||||
|
```
|
||||||
|
# ignore files/dirs with .js or .css suffix
|
||||||
|
gg -x '*.js' -x '*.css' pattern
|
||||||
|
|
||||||
|
# only match files with .go suffix (any subdir)
|
||||||
|
gg -I '*.go' pattern
|
||||||
|
|
||||||
|
# only match files whose parent dir is "stuff", but ignore "foo" subdir
|
||||||
|
gg -x ./foo -I 'stuff/*' pattern
|
||||||
|
|
||||||
|
# only match .js files with a directory "things" in the path, but ignore
|
||||||
|
# .min.js (e.g. will match "foo/things/bar/my.js")
|
||||||
|
gg -I 'things/**/*.js' -x '*.min.js' pattern
|
||||||
|
```
|
||||||
|
|
||||||
|
Symlinks named on the command line are followed, but by default symlinks are
|
||||||
|
not followed when recursing into directories. `-L` allows them to be
|
||||||
|
dereferenced.
|
||||||
|
|
Loading…
Reference in New Issue