dwww Home | Manual pages | Find package

LOCATE(1)                   General Commands Manual                  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 ]
       [--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  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 in-
       tended 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 data-
              base.  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  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 fu-
              ture 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 op-
              tions), 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 op-
              tions), 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.

       -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 op-
              tion, 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 documen-
              tation 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 syn-
              onym for --statistics.  However, the output of locate -S is dif-
              ferent 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  data-
              base.  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,  con-
       tributed  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/findu-
       tils/#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>

COPYRIGHT
       Copyright © 1994-2022 Free Software Foundation, Inc.   License  GPLv3+:
       GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
       This  is  free  software:  you  are free to change and redistribute it.
       There is NO WARRANTY, to the extent permitted by law.

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

                                                                     LOCATE(1)

Generated by dwww version 1.16 on Tue Dec 16 06:02:58 CET 2025.