LOCATE(1) manual page
Table of Contents
locate - list files in databases that match a pattern
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 ] [--max-database-age D] [-P | -H | --nofollow] [-L | --follow] [--version] [-A |
--all] [-p | --print] [--help] pattern...
This manual page documents the
GNU version of locate. For each given pattern, locate searches one or more
databases of file names and displays 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 anywhere. 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 locate’s 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.
- -0, --null
- Use ASCII NUL as a separator, instead
of newline.
- -A, --all
- Print only names which match all non-option arguments,
not those matching one or more non-option arguments.
- -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’.
- -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
message is printed).
- The file name database format changed starting with
GNU
- find and locate version 4.0 to allow machines with different byte orderings
to share the databases. This version of locate can automatically recognize
and read databases produced for older versions 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.
- --help
- Print a summary
of the options to locate and exit.
- -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.
- -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.
- --max-database-age
D
- Normally, locate will issue a warning message when it searches a database
which is more than 8 days old. This option changes that value to something
other than 8. The effect of specifying a negative value is undefined.
- -m,
--mmap
- Accepted but does nothing, for compatibility with BSD locate.
- -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 similarity with find; the use of
-P is recommended over -H.
- -p, --print
- Print search results when they normally
would not, because of the presence of --statistics (-S) or --count (-c).
- -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 synonym for --statistics.
However, the ouptut of locate -S is different for the GNU and BSD implementations
of locate.
- --version
- Print the version number of locate and exit.
- -w, --wholename
- Match against the whole name of the file as listed in the database. This
is the default.
- 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.
find(1)
, locatedb(5)
, updatedb(1)
, xargs(1)
, glob(3)
, Finding
Files (on-line in Info, or printed)
The locate program started life
as the BSD fast find program, contributed to BSD by James A. Woods. This
was described by his paper Finding Files Fast which was published in Usenix
;login:, Vol 8, No 1, February/March, 1983, pp. 8-10. When the find program
began to assume a default -print action if no action was specified, this
changed the interpretation of find pattern. The BSD developers therefore
moved the fast find functionality into locate. The GNU implementation of
locate appears to be derived from the same code.
Significant changes to
locate in reverse order:
4.3.7 |
4.3.3 |
|
4.3.2 |
4.2.22 |
4.2.15 |
4.2.14 |
4.2.12 |
4.2.11 |
4.2.4 |
4.2.0
|
4.0 |
3.7 |
The locate database correctly handles filenames containing
newlines, but only if the system’s 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://savannah.gnu.org/bugs/?group=findutils.
The reason for
this is that you will then be able to track progress in fixing the problem.
Other comments 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.
Table of Contents