LOCATE(1) LOCATE(1)
NAME
locate - list files in databases that match a pattern
SYNOPSIS
locate [-d path | --database=path] [-e | -E | --[non-]existing] [-i |
--ignore-case] [-0 | --null] [-c | --count] [-w | --wholename] |-b |
--basename] [-l N | --limit=N] [-S | --statistics] [-r | --regex ] [-P
| -H | --nofollow] [-L | --follow] [--version] [-A | --all] [-p |
--print] [--help] pattern...
DESCRIPTION
This manual page documents the GNU version of locate. For each given
pattern, locate searches one or more databases of file names and dis
plays the file names that contain the pattern. Patterns can contain
shell-style metacharacters: *, ?, and []. The metacharacters do
not treat / or . specially. Therefore, a pattern foo*bar can
match a file name that contains foo3/bar, and a pattern *duck* can
match a file name that contains lake/.ducky. Patterns that contain
metacharacters should be quoted to protect them from expansion by the
shell.
If a pattern is a plain string it contains no metacharacters locate
displays all file names in the database that contain that string any
where. If a pattern does contain metacharacters, locate only displays
file names that match the pattern exactly. As a result, patterns that
contain metacharacters should usually begin with a *, and will most
often end with one as well. The exceptions are patterns that are
intended to explicitly match the beginning or end of a file name.
The file name databases contain lists of files that were on the system
when the databases were last updated. The system administrator can
choose the file name of the default database, the frequency with which
the databases are updated, and the directories for which they contain
entries; see updatedb(1).
If locates output is going to a terminal, unusual characters in the
output are escaped in the same way as for the -print action of the find
command. If the output is not going to a terminal, file names are
printed exactly as-is.
OPTIONS
-A, --all
Print only names which match all non-option arguments, not those
matching one or more non-option arguments.
-c, --count
Instead of printing the matched filenames, just print the total
number of matches we found, unless --print (-p) is also present.
-d path, --database=path
Instead of searching the default file name database, search the
file name databases in path, which is a colon-separated list of
database file names. You can also use the environment variable
LOCATE_PATH to set the list of database files to search. The
option overrides the environment variable if both are used.
Empty elements in the path are taken to be synonyms for the file
name of the default database. A database can be supplied on
stdin, using - as an element of path. If more than one element
of path is -, later instances are ignored (and a warning mes
sage is printed).
The file name database format changed starting with GNU find and
locate version 4.0 to allow machines with different byte order
ings to share the databases. This version of locate can auto
matically recognize and read databases produced for older ver
sions of GNU locate or Unix versions of locate or find. Support
for the old locate database format will be discontinued in a
future release.
-e, --existing
Only print out such names that currently exist (instead of such
names that existed when the database was created). Note that
this may slow down the program a lot, if there are many matches
in the database. If you are using this option within a program,
please note that it is possible for the file to be deleted after
locate has checked that it exists, but before you use it.
-E, --non-existing
Only print out such names that currently do not exist (instead
of such names that existed when the database was created). Note
that this may slow down the program a lot, if there are many
matches in the database.
-L, --follow
If testing for the existence of files (with the -e or -E
options), consider broken symbolic links to be non-existing.
This is the default.
-P, -H, --nofollow
If testing for the existence of files (with the -e or -E
options), treat broken symbolic links as if they were existing
files. The -H form of this option is provided purely for simi
larity with find; the use of -P is recommended over -H.
-i, --ignore-case
Ignore case distinctions in both the pattern and the file names.
-l N, --limit=N
Limit the number of matches to N. If a limit is set via this
option, the number of results printed for the -c option will
never be larger than this number.
-m, --mmap
Accepted but does nothing, for compatibility with BSD locate.
-0, --null
Use ASCII NUL as a separator, instead of newline.
-p, --print
Print search results when they normally would not, because of
the presence of --statistics (-S) or --count (-c).
-w, --wholename
Match against the whole name of the file as listed in the
database. This is the default.
-b, --basename
Results are considered to match if the pattern specified matches
the final component of the name of a file as listed in the
database. This final component is usually referred to as the
base name.
-r, --regex
The pattern specified on the command line is understood to be a
regular expression, as opposed to a glob pattern. The Regular
expressions work in the same was as in emacs and find, except
for the fact that "." will match a newline. Filenames whose
full paths match the specified regular expression are printed
(or, in the case of the -c option, counted). If you wish to
anchor your regular expression at the ends of the full path
name, then as is usual with regular expressions, you should use
the characters ^ and $ to signify this.
-s, --stdio
Accepted but does nothing, for compatibility with BSD locate.
-S, --statistics
Print various statistics about each locate database and then
exit without performing a search, unless non-option arguments
are given. For compatibility with BSD, -S is accepted as a syn
onym for --statistics. However, the ouptut of locate -S is dif
ferent for the GNU and BSD implementations of locate.
--help Print a summary of the options to locate and exit.
--version
Print the version number of locate and exit.
ENVIRONMENT
LOCATE_PATH
Colon-separated list of databases to search. If the value has a
leading or trailing colon, or has two colons in a row, you may
get results that vary between different versions of locate.
SEE ALSO
find(1), locatedb(5), updatedb(1), xargs(1), glob(3), Finding Files
(on-line in Info, or printed)
BUGS
The locate database correctly handles filenames containing newlines,
but only if the systems sort command has a working -z option. If you
suspect that locate may need to return filenames containing newlines,
consider using its --null option.
The best way to report a bug is to use the form at http://savan
nah.gnu.org/bugs/?group=findutils. The reason for this is that you
will then be able to track progress in fixing the problem. Other com
ments about locate(1) and about the findutils package in general can be
sent to the bug-findutils mailing list. To join the list, send email
to bug-findutils-request@gnu.org.
LOCATE(1)
|