Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
LOCATE(1)							     LOCATE(1)

       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]  [--ver-
       sion] [-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  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

       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 dis-
       plays 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 data-
	      base.   This final component is usually referred to as the `base

       -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.

       --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 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 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.

	      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.

	      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, contrib-
       uted 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,	Febru-
       ary/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

       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://savan-  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



Want to link to this manual page? Use this URL:

home | help