--- findutils-4.9.0/doc/find.texi.orig 2022-02-02 01:14:41.000000000 +0100 +++ findutils-4.9.0/doc/find.texi 2022-03-15 13:06:22.318347936 +0100 @@ -13,17 +13,11 @@ @finalout @end iftex -@dircategory Basics +@dircategory Shell utilities: @direntry -* Finding files: (find). Operating on files matching certain criteria. -@end direntry - -@dircategory Individual utilities -@direntry -* find: (find)Invoking find. Finding and acting on files. -* locate: (find)Invoking locate. Finding files in a database. -* updatedb: (find)Invoking updatedb. Building the locate database. -* xargs: (find)Invoking xargs. Operating on many files. +* Finding files: (find). Operating on files matching certain criteria +* find: (find)find. Finding and acting on files +* xargs: (find)xargs. Operating on many files @end direntry @copying @@ -68,7 +62,6 @@ * Introduction:: Summary of the tasks this manual describes. * Finding Files:: Finding files that match certain criteria. * Actions:: Doing things to files you have found. -* Databases:: Maintaining file name databases. * File Permissions:: How to control access to files. * Date input formats:: Specifying literal times. * Configuration:: Options you can select at compile time. @@ -87,16 +80,14 @@ This manual shows how to find files that meet criteria you specify, and how to perform various actions on the files that you find. The principal programs that you use to perform these tasks are -@code{find}, @code{locate}, and @code{xargs}. Some of the examples in +@code{find} and @code{xargs}. Some of the examples in this manual use capabilities specific to the GNU versions of those programs. GNU @code{find} was originally written by Eric Decker, with enhancements by David MacKenzie, Jay Plett, and Tim Wood. GNU @code{xargs} was originally written by Mike Rendell, with enhancements -by David MacKenzie. GNU @code{locate} and its associated utilities -were originally written by James Woods, with enhancements by David -MacKenzie. The idea for @samp{find -print0} and @samp{xargs -0} came +by David MacKenzie. The idea for @samp{find -print0} and @samp{xargs -0} came from Dan Bernstein. The current maintainer of GNU findutils (and this manual) is James Youngman. Many other people have contributed bug fixes, small improvements, and helpful suggestions. Thanks! @@ -122,7 +113,7 @@ @itemize @bullet @item The version of the software you are running. You can find this -out by running @samp{locate --version}. +out by running @samp{find --version}. @item What you were trying to do @item The @emph{exact} command line you used @item The @emph{exact} output you got (if this is very long, try to @@ -220,9 +211,7 @@ @section Overview The principal programs used for making lists of files that match given -criteria and running commands on them are @code{find}, @code{locate}, -and @code{xargs}. An additional command, @code{updatedb}, is used by -system administrators to create databases for @code{locate} to use. +criteria and running commands on them are @code{find} and @code{xargs}. @code{find} searches for files in a directory hierarchy and prints information about the files it found. It is run like this: @@ -242,23 +231,6 @@ Notice that the wildcard must be enclosed in quotes in order to protect it from expansion by the shell. -@code{locate} searches special file name databases for file names that -match patterns. The system administrator runs the @code{updatedb} -program to create the databases. @code{locate} is run like this: - -@example -locate @r{[}@var{option}@dots{}@r{]} @var{pattern}@dots{} -@end example - -@noindent -This example prints the names of all files in the default file name -database whose name ends with @samp{Makefile} or @samp{makefile}. -Which file names are stored in the database depends on how the system -administrator ran @code{updatedb}. -@example -locate '*[Mm]akefile' -@end example - The name @code{xargs}, pronounced EX-args, means ``combine arguments.'' @code{xargs} builds and executes command lines by gathering together arguments it reads on the standard input. Most @@ -462,7 +434,6 @@ @menu * Base Name Patterns:: * Full Name Patterns:: -* Fast Full Name Search:: * Shell Pattern Matching:: Wildcards used by these programs. @end menu @@ -614,82 +585,10 @@ @end deffn -@node Fast Full Name Search -@subsection Fast Full Name Search - -To search for files by name without having to actually scan the -directories on the disk (which can be slow), you can use the -@code{locate} program. For each shell pattern you give it, -@code{locate} searches one or more databases of file names and -displays the file names that contain the pattern. @xref{Shell Pattern -Matching}, for details about shell patterns. - -If a pattern is a plain string -- it contains no -metacharacters -- @code{locate} displays all file names in the database -that contain that string. If a pattern contains -metacharacters, @code{locate} only displays file names that match the -pattern exactly. As a result, patterns that contain metacharacters -should usually begin with a @samp{*}, 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. - -If you only want @code{locate} to match against the last component of -the file names (the ``base name'' of the files) you can use the -@samp{--basename} option. The opposite behaviour is the default, but -can be selected explicitly by using the option @samp{--wholename}. - -The command -@example -locate @var{pattern} -@end example - -is almost equivalent to -@example -find @var{directories} -name @var{pattern} -@end example - -where @var{directories} are the directories for which the file name -databases contain information. The differences are that the -@code{locate} information might be out of date, and that @code{locate} -handles wildcards in the pattern slightly differently than @code{find} -(@pxref{Shell Pattern Matching}). - -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. - -Here is how to select which file name databases @code{locate} -searches. The default is system-dependent. At the time this document -was generated, the default was @file{@value{LOCATE_DB}}. - -@table @code -@item --database=@var{path} -@itemx -d @var{path} -Instead of searching the default file name database, search the file -name databases in @var{path}, which is a colon-separated list of -database file names. You can also use the environment variable -@env{LOCATE_PATH} to set the list of database files to search. The -option overrides the environment variable if both are used. -@end table - -GNU @code{locate} can read file name databases generated by the -@code{slocate} package. However, these generally contain a list of -all the files on the system, and so when using this database, -@code{locate} will produce output only for files which are accessible -to you. @xref{Invoking locate}, for a description of the -@samp{--existing} option which is used to do this. - -The @code{updatedb} program can also generate database in a format -compatible with @code{slocate}. @xref{Invoking updatedb}, for a -description of its @samp{--dbformat} and @samp{--output} options. - - @node Shell Pattern Matching @subsection Shell Pattern Matching -@code{find} and @code{locate} can compare file names, or parts of file +@code{find} and can compare file names, or parts of file names, to shell patterns. A @dfn{shell pattern} is a string that may contain the following special characters, which are known as @dfn{wildcards} or @dfn{metacharacters}. @@ -3069,245 +2968,6 @@ @end example -@node Databases -@chapter File Name Databases - -The file name databases used by @code{locate} contain lists of files -that were in particular directory trees when the databases were last -updated. The file name of the default database is determined when -@code{locate} and @code{updatedb} are configured and installed. The -frequency with which the databases are updated and the directories for -which they contain entries depend on how often @code{updatedb} is run, -and with which arguments. - -You can obtain some statistics about the databases by using -@samp{locate --statistics}. - -@menu -* Database Locations:: -* Database Formats:: -* Newline Handling:: -@end menu - - -@node Database Locations -@section Database Locations - -There can be multiple file name databases. Users can select which -databases @code{locate} searches using the @env{LOCATE_PATH} -environment variable or a command line option. 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. File name databases are updated by -running the @code{updatedb} program, typically nightly. - -In networked environments, it often makes sense to build a database at -the root of each filesystem, containing the entries for that -filesystem. @code{updatedb} is then run for each filesystem on the -fileserver where that filesystem is on a local disk, to prevent -thrashing the network. - -@xref{Invoking updatedb}, for the description of the options to -@code{updatedb}. These options can be used to specify which -directories are indexed by each database file. - -The default location for the locate database depends on how findutils -is built, but the findutils installation accompanying this manual uses -the default location @file{@value{LOCATE_DB}}. - -If no database exists at @file{@value{LOCATE_DB}} but the user did not -specify where to look (by using @samp{-d} or setting -@env{LOCATE_PATH}), then @code{locate} will also check for a -``secure'' database in @file{/var/lib/slocate/slocate.db}. - -@node Database Formats -@section Database Formats - -The file name databases contain lists of files that were in particular -directory trees when the databases were last updated. The file name -database format changed starting with GNU @code{locate} version 4.0 to -allow machines with different byte orderings to share the databases. - -GNU @code{locate} can read both the old pre-findutils-4.0 database -format and the @samp{LOCATE02} database format. Support for the old -database format will shortly be removed from @code{locate}. It has -already been removed from @code{updatedb}. - -If you run @samp{locate --statistics}, the resulting summary indicates -the type of each @code{locate} database. You select which database -format @code{updatedb} will use with the @samp{--dbformat} option. - -The @samp{slocate} database format is very similar to @samp{LOCATE02} -and is also supported (in both @code{updatedb} and @code{locate}). - -@menu -* LOCATE02 Database Format:: -* Sample LOCATE02 Database:: -* slocate Database Format:: -* Old Database Format:: -@end menu - -@node LOCATE02 Database Format -@subsection LOCATE02 Database Format - -@code{updatedb} runs a program called @code{frcode} to -@dfn{front-compress} the list of file names, which reduces the -database size by a factor of 4 to 5. Front-compression (also known as -incremental encoding) works as follows. - -The database entries are a sorted list (case-insensitively, for users' -convenience). Since the list is sorted, each entry is likely to share -a prefix (initial string) with the previous entry. Each database -entry begins with an offset-differential count byte, which is the -additional number of characters of prefix of the preceding entry to -use beyond the number that the preceding entry is using of its -predecessor. (The counts can be negative.) Following the count is a -null-terminated ASCII remainder -- the part of the name that follows -the shared prefix. - -If the offset-differential count is larger than can be stored in a -byte (+/-127), the byte has the value 0x80 and the count follows in a -2-byte word, with the high byte first (network byte order). - -Every database begins with a dummy entry for a file called -@file{LOCATE02}, which @code{locate} checks for to ensure that the -database file has the correct format; it ignores the entry in doing -the search. - -Databases cannot be concatenated together, even if the first (dummy) -entry is trimmed from all but the first database. This is because the -offset-differential count in the first entry of the second and -following databases will be wrong. - -In the output of @samp{locate --statistics}, the new database format -is referred to as @samp{LOCATE02}. - -@node Sample LOCATE02 Database -@subsection Sample LOCATE02 Database - -Sample input to @code{frcode}: -@c with nulls changed to newlines: - -@example -/usr/src -/usr/src/cmd/aardvark.c -/usr/src/cmd/armadillo.c -/usr/tmp/zoo -@end example - -Length of the longest prefix of the preceding entry to share: - -@example -0 /usr/src -8 /cmd/aardvark.c -14 rmadillo.c -5 tmp/zoo -@end example - -Output from @code{frcode}, with trailing nulls changed to newlines -and count bytes made printable: - -@example -0 LOCATE02 -0 /usr/src -8 /cmd/aardvark.c -6 rmadillo.c --9 tmp/zoo -@end example - -(6 = 14 - 8, and -9 = 5 - 14) - -@node slocate Database Format -@subsection slocate Database Format - -The @code{slocate} program uses a database format similar to, but not -quite the same as, GNU @code{locate}. The first byte of the database -specifies its @dfn{security level}. If the security level is 0, -@code{slocate} will read, match and print filenames on the basis of -the information in the database only. However, if the security level -byte is 1, @code{slocate} omits entries from its output if the -invoking user is unable to access them. The second byte of the -database is zero. The second byte is immediately followed by the -first database entry. The first entry in the database is not preceded -by any differential count or dummy entry. Instead the differential -count for the first item is assumed to be zero. - -Starting with the second entry (if any) in the database, data is -interpreted as for the GNU LOCATE02 format. - -@node Old Database Format -@subsection Old Database Format - -The old database format is used by Unix @code{locate} and @code{find} -programs and pre-4.0 releases of GNU findutils. @code{locate} -understands this format, though @code{updatedb} will no longer produce -it. - -The old format differs from @samp{LOCATE02} in the following ways. -Instead of each entry starting with an offset-differential count byte -and ending with a null, byte values from 0 through 28 indicate -offset-differential counts from -14 through 14. The byte value -indicating that a long offset-differential count follows is 0x1e (30), -not 0x80. The long counts are stored in host byte order, which is not -necessarily network byte order, and host integer word size, which is -usually 4 bytes. They also represent a count 14 less than their -value. The database lines have no termination byte; the start of the -next line is indicated by its first byte having a value <= 30. - -In addition, instead of starting with a dummy entry, the old database -format starts with a 256 byte table containing the 128 most common -bigrams in the file list. A bigram is a pair of adjacent bytes. -Bytes in the database that have the high bit set are indexes (with the -high bit cleared) into the bigram table. The bigram and -offset-differential count coding makes these databases 20-25% smaller -than the new format, but makes them not 8-bit clean. Any byte in a -file name that is in the ranges used for the special codes is replaced -in the database by a question mark, which not coincidentally is the -shell wildcard to match a single character. The old format therefore -cannot faithfully store entries with non-ASCII characters. - -Because the long counts are stored as -native-order machine words, the database format is not easily used in -environments which differ in terms of byte order. If locate databases -are to be shared between machines, the @samp{LOCATE02} database format should -be used. This has other benefits as discussed above. However, the -length of the filename currently being processed can normally be used -to place reasonable limits on the long counts and so this information -is used by locate to help it guess the byte ordering of the old format -database. Unless it finds evidence to the contrary, @code{locate} -will assume that the byte order of the database is the same as the -native byte order of the machine running @code{locate}. The output of -@samp{locate --statistics} also includes information about the byte -order of old-format databases. - -The output of @samp{locate --statistics} will give an incorrect count -of the number of file names containing newlines or high-bit characters -for old-format databases. - -Old versions of GNU @code{locate} fail to correctly handle very long -file names, possibly leading to security problems relating to a heap -buffer overrun. @xref{Security Considerations for locate}, for a -detailed explanation. - -@node Newline Handling -@section Newline Handling - -Within the database, file names are terminated with a null character. -This is the case for both the old and the new format. - -When the new database format is being used, the compression technique -used to generate the database though relies on the ability to sort the -list of files before they are presented to @code{frcode}. - -If the system's sort command allows separating its input list of -files with null characters via the @samp{-z} option, this option -is used and therefore @code{updatedb} and @code{locate} will both -correctly handle file names containing newlines. If the @code{sort} -command lacks support for this, the list of files is delimited with -the newline character, meaning that parts of file names containing -newlines will be incorrectly sorted. This can result in both -incorrect matches and incorrect failures to match. - @node File Permissions @chapter File Permissions @@ -3370,15 +3030,13 @@ discussed in this manual. @menu -* Invoking find:: -* Invoking locate:: -* Invoking updatedb:: -* Invoking xargs:: +* find:: +* xargs:: * Regular Expressions:: * Environment Variables:: @end menu -@node Invoking find +@node find @section Invoking @code{find} @example @@ -3593,243 +3251,7 @@ actions, and options that the expression can contain. If the expression is missing, @samp{-print} is assumed. -@node Invoking locate -@section Invoking @code{locate} - -@example -locate @r{[}@var{option}@dots{}@r{]} @var{pattern}@dots{} -@end example - -For each @var{pattern} given @code{locate} searches one or more file -name databases returning each match of @var{pattern}. - -@table @code -@item --all -@itemx -A -Print only names which match all non-option arguments, not those -matching one or more non-option arguments. - -@item --basename -@itemx -b -The specified pattern is matched against just the last component of -the name of a file in the @code{locate} database. This last -component is also called the ``base name''. For example, the base -name of @file{/tmp/mystuff/foo.old.c} is @file{foo.old.c}. If the -pattern contains metacharacters, it must match the base name exactly. -If not, it must match part of the base name. - -@item --count -@itemx -c -Instead of printing the matched file names, just print the total -number of matches found, unless @samp{--print} (@samp{-p}) is also -present. - - -@item --database=@var{path} -@itemx -d @var{path} -Instead of searching the default @code{locate} database -@file{@value{LOCATE_DB}}, @code{locate} searches the file -name databases in @var{path}, which is a colon-separated list of -database file names. You can also use the environment variable -@env{LOCATE_PATH} to set the list of database files to search. The -option overrides the environment variable if both are used. Empty -elements in @var{path} (that is, a leading or trailing colon, or two -colons in a row) are taken to stand for the default database. -A database can be supplied on stdin, using @samp{-} as an element -of @samp{path}. If more than one element of @samp{path} is @samp{-}, -later instances are ignored (but a warning message is printed). - -@item --existing -@itemx -e -Only print out such names which currently exist (instead of such names -which existed when the database was created). Note that this may slow -down the program a lot, if there are many matches in the database. -The way in which broken symbolic links are treated is affected by the -@samp{-L}, @samp{-P} and @samp{-H} options. Please note that it is -possible for the file to be deleted after @code{locate} has checked -that it exists, but before you use it. This option is automatically -turned on when reading an @code{slocate} database in secure mode -(@pxref{slocate Database Format}). - -@item --non-existing -@itemx -E -Only print out such names which currently do not exist (instead of -such names which existed when the database was created). Note that -this may slow down the program a lot, if there are many matches in the -database. The way in which broken symbolic links are treated is -affected by the @samp{-L}, @samp{-P} and @samp{-H} options. Please -note that @code{locate} checks that the file does not exist, but a -file of the same name might be created after @code{locate}'s check but -before you read @code{locate}'s output. - -@item --follow -@itemx -L -If testing for the existence of files (with the @samp{-e} or @samp{-E} -options), consider broken symbolic links to be non-existing. This is -the default behaviour. - -@item --nofollow -@itemx -P -@itemx -H -If testing for the existence of files (with the @samp{-e} or @samp{-E} -options), treat broken symbolic links as if they were existing files. -The @samp{-H} form of this option is provided purely for similarity -with @code{find}; the use of @samp{-P} is recommended over @samp{-H}. - -@item --ignore-case -@itemx -i -Ignore case distinctions in both the pattern and the file names. - -@item --limit=N -@itemx -l N -Limit the number of results printed to N. When used with the -@samp{--count} option, the value printed will never be larger than -this limit. -@item --max-database-age=D -Normally, @code{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. -@item --mmap -@itemx -m -Accepted but does nothing. The option is supported only to provide -compatibility with BSD's @code{locate}. - -@item --null -@itemx -0 -Results are separated with the ASCII NUL character rather than the -newline character. To get the full benefit of this option, -use the new @code{locate} database format (that is the default -anyway). - -@item --print -@itemx -p -Print search results when they normally would not be due to -use of @samp{--statistics} (@samp{-S}) or @samp{--count} -(@samp{-c}). - -@item --wholename -@itemx -w -The specified pattern is matched against the whole name of the file in -the @code{locate} database. If the pattern contains metacharacters, -it must match exactly. If not, it must match part of the whole file -name. This is the default behaviour. - -@item --regex -@itemx -r -Instead of using substring or shell glob matching, the pattern -specified on the command line is understood to be a regular -expression. GNU Emacs-style regular expressions are assumed unless -the @samp{--regextype} option is also given. File names from the -@code{locate} database are matched using the specified regular -expression. If the @samp{-i} flag is also given, matching is -case-insensitive. Matches are performed against the whole path name, -and so by default a pathname will be matched if any part of it matches -the specified regular expression. The regular expression may use -@samp{^} or @samp{$} to anchor a match at the beginning or end of a -pathname. - -@item --regextype -This option changes the regular expression syntax and behaviour used -by the @samp{--regex} option. @ref{Regular Expressions} for more -information on the regular expression dialects understood by GNU -findutils. - -@item --stdio -@itemx -s -Accepted but does nothing. The option is supported only to provide -compatibility with BSD's @code{locate}. - -@item --statistics -@itemx -S -Print some summary information for each @code{locate} database. No -search is performed unless non-option arguments are given. -Although the BSD version of locate also has this option, the format of the -output is different. - -@item --help -Print a summary of the command line usage for @code{locate} and exit. - -@item --version -Print the version number of @code{locate} and exit. -@end table - -@node Invoking updatedb -@section Invoking @code{updatedb} - -@example -updatedb @r{[}@var{option}@dots{}@r{]} -@end example - -@code{updatedb} creates and updates the database of file names used by -@code{locate}. @code{updatedb} generates a list of files similar to -the output of @code{find} and then uses utilities for optimizing the -database for performance. @code{updatedb} is often run periodically -as a @code{cron} job and configured with environment variables or -command options. Typically, operating systems have a shell script -that ``exports'' configurations for variable definitions and uses -another shell script that ``sources'' the configuration file into the -environment and then executes @code{updatedb} in the environment. - -@table @code -@item --findoptions='@var{OPTION}@dots{}' -Global options to pass on to @code{find}. -The environment variable @env{FINDOPTIONS} also sets this value. -Default is none. - -@item --localpaths='@var{path}@dots{}' -Non-network directories to put in the database. -Default is @file{/}. - -@item --netpaths='@var{path}@dots{}' -Network (NFS, AFS, RFS, etc.) directories to put in the database. -The environment variable @env{NETPATHS} also sets this value. -Default is none. - -@item --prunepaths='@var{path}@dots{}' -Directories to omit from the database, which would otherwise be -included. The environment variable @env{PRUNEPATHS} also sets this -value. Default is @file{/tmp /usr/tmp /var/tmp /afs}. The paths are -used as regular expressions (with @code{find ... -regex}, so you need -to specify these paths in the same way that @code{find} will encounter -them. This means for example that the paths must not include trailing -slashes. - -@item --prunefs='@var{path}@dots{}' -Filesystems to omit from the database, which would otherwise be -included. Note that files are pruned when a filesystem is reached; -Any filesystem mounted under an undesired filesystem will be ignored. -The environment variable @env{PRUNEFS} also sets this value. Default -is @file{nfs NFS proc}. - -@item --output=@var{dbfile} -The database file to build. The default is system-dependent, but -when this document was formatted it was @file{@value{LOCATE_DB}}. - -@item --localuser=@var{user} -The user to search the non-network directories as, using @code{su}. -Default is to search the non-network directories as the current user. -You can also use the environment variable @env{LOCALUSER} to set this user. - -@item --netuser=@var{user} -The user to search network directories as, using @code{su}. Default -@code{user} is @code{daemon}. You can also use the environment variable -@env{NETUSER} to set this user. - -@item --dbformat=@var{FORMAT} -Generate the locate database in format @code{FORMAT}. Supported -database formats include @code{LOCATE02} (which is the default) and -@code{slocate}. The @code{slocate} format exists for compatibility -with @code{slocate}. @xref{Database Formats}, for a detailed -description of each format. - -@item --help -Print a summary of the command line usage and exit. -@item --version -Print the version number of @code{updatedb} and exit. -@end table - -@node Invoking xargs +@node xargs @section Invoking @code{xargs} @example @@ -5180,7 +4602,6 @@ * Levels of Risk:: What is your level of exposure to security problems? * Security Considerations for find:: Security problems with find * Security Considerations for xargs:: Security problems with xargs -* Security Considerations for locate:: Security problems with locate * Security Summary:: That was all very complex, what does it boil down to? * Further Reading on Security:: @end menu @@ -5589,19 +5010,6 @@ trailing whitespace is turned off by the @samp{-0} argument to @code{xargs}, which is another reason to use that option. -@comment node-name, next, previous, up -@node Security Considerations for locate -@section Security Considerations for @code{locate} - -@subsection Race Conditions -It is fairly unusual for the output of @code{locate} to be fed into -another command. However, if this were to be done, this would raise -the same set of security issues as the use of @samp{find @dots{} -print}. -Although the problems relating to whitespace in file names can be -resolved by using @code{locate}'s @samp{-0} option, this still leaves -the race condition problems associated with @samp{find @dots{} -print0}. -There is no way to avoid these problems in the case of @code{locate}. - @node Security Summary @section Summary @@ -5673,8 +5081,6 @@ @menu * Error Messages From find:: * Error Messages From xargs:: -* Error Messages From locate:: -* Error Messages From updatedb:: @end menu @node Error Messages From find @@ -5824,38 +5230,6 @@ See the manual of the system call @code{dup2(2)}. @end table -@node Error Messages From locate -@section Error Messages From @code{locate} - -@table @samp -@item warning: database @file{@value{LOCATE_DB}} is more than 8 days old -The @code{locate} program relies on a database which is periodically -built by the @code{updatedb} program. That hasn't happened in a long -time. To fix this problem, run @code{updatedb} manually. This can -often happen on systems that are generally not left on, so the -periodic ``cron'' task which normally does this doesn't get a chance -to run. - -@item locate database @file{@value{LOCATE_DB}} is corrupt or invalid -This should not happen. Re-run @code{updatedb}. If that works, but -@code{locate} still produces this error, run @code{locate --version} -and @code{updatedb --version}. These should produce the same output. -If not, you are using a mixed toolset; check your @env{PATH} -environment variable and your shell aliases (if you have any). If -both programs claim to be GNU versions, this is a bug; all versions of -these programs should interoperate without problem. Ask for help on -@email{bug-findutils@@gnu.org}. -@end table - - -@node Error Messages From updatedb -@section Error Messages From @code{updatedb} - -The @code{updatedb} program (and the programs it invokes) do issue -error messages, but none seem to be candidates for guidance. If -you are having a problem understanding one of these, ask for help on -@email{bug-findutils@@gnu.org}. - @node GNU Free Documentation License @appendix GNU Free Documentation License @include fdl.texi --- findutils-4.9.0/doc/find-maint.texi.orig 2022-02-02 00:27:31.000000000 +0100 +++ findutils-4.9.0/doc/find-maint.texi 2022-03-15 18:57:59.228173120 +0100 @@ -12,9 +12,9 @@ @finalout @end iftex -@dircategory GNU organization +@dircategory GNU organization: @direntry -* Maintaining Findutils: (find-maint). Maintaining GNU findutils +* Maintaining Findutils: (find-maint). Maintaining GNU findutils @end direntry @copying