список файлов в базах данных, соответствующих шаблону (list files in databases that match a pattern)
Имя (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 ] [--regextype R] [--max-database-age
D] [-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 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.
Параметры (Options)
-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
except for the fact that "." will match a newline. GNU
find
uses the same regular expressions. 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.
--regextype R
Use regular expression dialect R. Supported dialects
include `findutils-default', `posix-awk', `posix-basic',
`posix-egrep', `posix-extended', `posix-minimal-basic',
`awk', `ed', `egrep', `emacs', `gnu-awk', `grep' and
`sed'. See the Texinfo documentation for a detailed
explanation of these dialects.
-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
output 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.
Окружение (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
.
История (History)
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 Byte-order independent support for old database format
4.3.3 locate -i supports multi-byte characters correctly
Introduced --max_db_age
4.3.2 Support for the slocate database format
4.2.22 Introduced the --all option
4.2.15 Introduced the --regex option
4.2.14 Introduced options -L, -P, -H
4.2.12 Empty items in LOCATE_PATH
now indicate the default database
4.2.11 Introduced the --statistics option
4.2.4 Introduced --count and --limit
4.2.0 Glob characters cause matching against the whole file name
4.0 Introduced the LOCATE02 database format
3.7 Locate can search multiple databases
Ошибки (баги) (Bugs)
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.
Сообщение об ошибках (Reporting bugs)
GNU findutils online help:
<https://www.gnu.org/software/findutils/#get-help>
Report any translation bugs to
<https://translationproject.org/team/>
Report any other issue via the form at the GNU Savannah bug
tracker:
<https://savannah.gnu.org/bugs/?group=findutils>
General topics about the GNU findutils package are discussed at
the bug-findutils mailing list:
<https://lists.gnu.org/mailman/listinfo/bug-findutils>
Смотри также (See also)
find(1), updatedb(1), xargs(1), glob(3), locatedb
(5)
Full documentation
<https://www.gnu.org/software/findutils/locate>
or available locally via: info locate