Index: find.texi =================================================================== RCS file: /cvsroot/findutils/findutils/doc/find.texi,v retrieving revision 1.74 diff -u -r1.74 find.texi --- find.texi 13 Feb 2005 12:15:06 -0000 1.74 +++ find.texi 18 Feb 2005 09:05:34 -0000 @@ -352,7 +352,7 @@ @end example @end deffn -Patterns for @samp{-name} and @samp{-iname} will match a filename with +Patterns for @samp{-name} and @samp{-iname} will match a file name with a leading @samp{.}. For example the command @samp{find /tmp -name \*bar} will match the file @file{/tmp/.foobar}. @@ -367,7 +367,7 @@ For @samp{-iwholename}, the match is case-insensitive. To ignore a whole directory tree, use @samp{-prune} rather than checking every file in the tree (@pxref{Directories}). The ``entire file name'' as -used by find starts with the starting-point specified on the command +used by @code{find} starts with the starting-point specified on the command line, and is not converted to an absolute pathname, so for example @code{cd /; find tmp -wholename /tmp} will never match anything. @end deffn @@ -410,7 +410,7 @@ match the beginning or end of a file name. If you only want @code{locate} to match against the last component of -the filenames (the ``base name'' of the files) you can use the +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}. @@ -541,9 +541,9 @@ Symbolic links are different to ``hard links'' in the sense that you need permissions upon the linked-to file in order to be able to dereference the link. This can mean that even if you specify the -@samp{-L} option, find may not be able to determine the properties of +@samp{-L} option, @code{find} may not be able to determine the properties of the file that the link points to (because you don't have sufficient -permissions). In this situation, @samp{find} uses the properties of +permissions). In this situation, @code{find} uses the properties of the link itself. This also occurs if a symbolic link exists but points to a file that is missing. @@ -554,24 +554,24 @@ @item -P @code{find} does not dereference symbolic links at all. This is the default behaviour. This option must be specified before any of the -path names on the command line. +file names on the command line. @item -H @code{find} does not dereference symbolic links (except in the case of file names on the command line, which are dereferenced). If a symbolic link cannot be dereferenced, the information for the symbolic link itself is used. This option must be specified before any of the -path names on the command line. +file names on the command line. @item -L @code{find} dereferences symbolic links where possible, and where this is not possible it uses the properties of the symbolic link itself. -This option must be specified before any of the path names on the +This option must be specified before any of the file names on the command line. Use of this option also implies the same behaviour as the @samp{-noleaf} option. If you later use the @samp{-H} or @samp{-P} options, this does not turn off @samp{-noleaf}. @item -follow This option forms part of the ``expression'' and must be specified -after the path names, but it is otherwise equivalent to @samp{-L}. +after the file names, but it is otherwise equivalent to @samp{-L}. @end table The following differences in behavior occur when the @samp{-L} option @@ -592,7 +592,7 @@ @end itemize If the @samp{-L} option or the @samp{-H} option is used, -the filenames used as arguments to @samp{-newer}, @samp{-anewer}, and +the file names used as arguments to @samp{-newer}, @samp{-anewer}, and @samp{-cnewer} are dereferenced and the timestamp from the pointed-to file is used instead (if possible -- otherwise the timestamp from the symbolic link is used). @@ -603,7 +603,7 @@ @var{pattern}. For @samp{-ilname}, the match is case-insensitive. @xref{Shell Pattern Matching}, for details about the @var{pattern} argument. If the @samp{-L} option is in effect, this test will always -fail for symbolic links unless they are broken. So, to list any +return false for symbolic links unless they are broken. So, to list any symbolic links to @file{sysdep.c} in the current directory and its subdirectories, you can do: @@ -638,7 +638,7 @@ running @samp{ls -li} or @samp{find -ls}. You can search for hard links to inode number NUM by using @samp{-inum -NUM}. If there are any file system mount points below the directory +NUM}. If there are any filesystem mount points below the directory where you are starting the search, use the @samp{-xdev} option unless you are also using the @samp{-L} option. Using @samp{-xdev} this saves needless searching, since hard links to a file must be on the @@ -813,7 +813,7 @@ The number can be prefixed with a `+' or a `-'. A plus sign indicates that the test should succeed if the file uses at least @var{n} units -of storage (this is the way I normally use this test) and a minus sign +of storage (a common use of this test) and a minus sign indicates that the test should succeed if the file uses less than @var{n} units of storage. There is no `=' prefix, because that's the default anyway. @@ -828,7 +828,7 @@ @deffn Test -empty True if the file is empty and is either a regular file or a directory. -This might make it a good candidate for deletion. This test is useful +This might help determine good candidates for deletion. This test is useful with @samp{-depth} (@pxref{Directories}) and @samp{-delete} (@pxref{Single File}). @end deffn @@ -901,8 +901,8 @@ @deffn Test -perm mode -True if the file's permissions are exactly @var{mode} (which can be -numeric or symbolic). +True if the file's permissions are exactly @var{mode}, which can be +numeric or symbolic. If @var{mode} starts with @samp{-}, true if @emph{all} of the permissions set in @var{mode} are set for the file; @@ -1065,7 +1065,7 @@ @deffn Action -quit Exit immediately (with return value zero if no errors have occurred). -No child processes will be left running, but no more paths specified +No child processes will be left running, but no more files specified on the command line will be processed. For example, @code{find /tmp/foo /tmp/bar -print -quit} will print only @samp{/tmp/foo}. @end deffn @@ -1217,12 +1217,12 @@ @section Print File Name @deffn Action -print -True; print the full file name on the standard output, followed by a +True; print the entire file name on the standard output, followed by a newline. @end deffn @deffn Action -fprint file -True; print the full file name into file @var{file}, followed by a +True; print the entire file name into file @var{file}, followed by a newline. If @var{file} does not exist when @code{find} is run, it is created; if it does exist, it is truncated to 0 bytes. The file names @file{/dev/stdout} and @file{/dev/stderr} are handled specially; they @@ -1378,7 +1378,7 @@ @item %p @c supports %-X.Yp File's name (not the absolute path name, but the name of the file as -it was encountered by find - that is, as a relative path from one of +it was encountered by @code{find} - that is, as a relative path from one of the starting points). @item %f File's name with any leading directories removed (only the last element). @@ -1633,7 +1633,7 @@ Here is how to run a command on one file at a time. @deffn Action -execdir command ; -Execute @var{command}; true if 0 status is returned. @code{find} takes +Execute @var{command}; true if zero status is returned. @code{find} takes all arguments after @samp{-exec} to be part of the command until an argument consisting of @samp{;} is reached. It replaces the string @samp{@{@}} by the current file name being processed everywhere it @@ -1733,7 +1733,7 @@ @end example However, that method produces an error if the length of the @samp{.c} -file names exceeds the operating system's command-line length limit. +file names exceeds the operating system's command line length limit. @code{xargs} avoids that problem by running the command as many times as necessary without exceeding the limit: @@ -1825,7 +1825,7 @@ @code{cpio}, or @code{perl}. @deffn Action -print0 -True; print the full file name on the standard output, followed by a +True; print the entire file name on the standard output, followed by a null character. @end deffn @@ -1889,7 +1889,7 @@ @item --max-chars=@var{max-chars} @itemx -s @var{max-chars} Use at most @var{max-chars} characters per command line, including the -command and initial arguments and the terminating nulls at the ends of +command initial arguments and the terminating nulls at the ends of the argument strings. If you specify a value for this option which is too large or small, a warning message is printed and the appropriate upper or lower limit is used instead. @@ -1919,7 +1919,7 @@ terminate arguments; instead, the input is split at newlines only. If @var{replace-str} is omitted, it defaults to @samp{@{@}} (like for @samp{find -exec}). Implies @samp{-x} and @samp{-l 1}. As an -example, to sort each file the @file{bills} directory, leaving the +example, to sort each file in the @file{bills} directory, leaving the output in that file name with @file{.sorted} appended, you could do: @example @@ -2024,7 +2024,7 @@ @end example -This script relies on the fact that the shell exits with the status of +This script relies on the shell exiting with the status of the last command in the pipeline, in this case @code{grep}. The @code{grep} command exits with a true status if it found any matches, false if not. Here is an example of using the script (assuming it is @@ -2344,7 +2344,7 @@ results if given a new-format database. If you run @samp{locate --statistics}, the resulting summary indicates -the type of each locate database. +the type of each @code{locate} database. @menu @@ -2379,7 +2379,7 @@ database file has the correct format; it ignores the entry in doing the search. -Databases can not be concatenated together, even if the first (dummy) +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. @@ -2452,18 +2452,18 @@ question mark, which not coincidentally is the shell wildcard to match a single character. -The old format therefore can not faithfully store entries with non-ASCII +The old format therefore cannot faithfully store entries with non-ASCII characters. It therefore should not be used in internationalized environments. The output of @samp{locate --statistics} will give an incorrect count -of the number of filenames containing newlines or high-bit characters +of the number of file names containing newlines or high-bit characters for old-format databases. @node Newline Handling @section Newline Handling -Within the database, filenames are terminated with a null character. +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 @@ -2473,17 +2473,17 @@ If the system's sort command allows its input list of files to be separated with null characters via the @samp{-z} option, this option is used and therefore @code{updatedb} and @code{locate} will both -correctly handle filenames containing newlines. If the @code{sort} +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 filenames containing +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. -On the other hand, if you are using the old database format, filenames +On the other hand, if you are using the old database format, file names with embedded newlines are not correctly handled. There is no technical limitation which enforces this, it's just that the -@code{bigram} program has no been updated to support lists of -filenames separated by nulls. +@code{bigram} program has not been updated to support lists of +file names separated by nulls. So, if you are using the new database format (this is the default) and your system uses GNU @code{find}, newlines will be correctly handled @@ -2527,14 +2527,14 @@ describing the files we wish to search for. The first part of the expression is recognised by the fact that it begins with @samp{-}, @samp{(}, @samp{)}, @samp{,}, or @samp{!}. Any arguments after it are -the rest of the expression. If no paths are given, the current +the rest of the expression. If no files are given, the current directory is used. If no expression is given, the expression @samp{-print} is used. -@code{find} exits with status 0 if all files are processed successfully, +@code{find} exits with status zero if all files are processed successfully, greater than 0 if errors occur. -Three options can precede the list of path names. They determine the +Three options can precede the list of files. They determine the way that symbolic links are handled. @table @code @@ -2545,7 +2545,7 @@ Always follow symbolic links, except in the case of the @samp{-xtype} predicate. @item -H -Follow symbolic links specified in the list of paths to search, or +Follow symbolic links specified in the list of files to search, or which are otherwise specified on the command line. @end table @@ -2565,7 +2565,7 @@ @table @code @item --help -Print a summary of the command-line argument format and exit. +Print a summary of the command line argument format and exit. @item --version Print the version number of @code{find} and exit. @end table @@ -2639,7 +2639,7 @@ @item --basename @itemx -b The specified pattern is matched against just the last component of -the name of the file in the locate database. This last component is +the name of the 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, @@ -2647,7 +2647,7 @@ @item --count @itemx -c -Instead of printing the matched filenames, just print the total +Instead of printing the matched file names, just print the total number of matches we found. @@ -2702,12 +2702,12 @@ @itemx -0 Results are separated with the ASCII NUL character rather than the newline character. To get the full benefit of the use of this option, -use the new locate database format (that is the default anyway). +use the new @code{locate} database format (that is the default anyway). @item --wholename @itemx -w The specified pattern is matched against the whole name of the file in -the locate database. If the pattern contains metacharacters, it must +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. @@ -2715,7 +2715,7 @@ @itemx -r Instead of using substring or shell glob matching, the pattern specified on the command line is understood to be a POSIX extended -regular expression. Filenames from the locate database which match +regular expression. File names from the @code{locate} database which match the specified regular expression are printed (or counted). 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 @@ -2730,7 +2730,7 @@ @item --statistics @itemx -S -Print some summary information for each locate database. No search is +Print some summary information for each @code{locate} database. No search is performed. @item --help @@ -2768,9 +2768,9 @@ Default is @file{/tmp /usr/tmp /var/tmp /afs}. @item --prunefs='@var{path}@dots{}' -File systems to omit from the database, which would otherwise be included. -Note that files are pruned when a file system is reached; -Any file system mounted under an undesired file system will be +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 @code{PRUNEFS} also sets this value. Default is @file{nfs NFS proc}. @@ -2790,14 +2790,14 @@ You can also use the environment variable @code{NETUSER} to set this user. @item --old-format -Generate a locate database in the old format, for compatibility with +Generate a @code{locate} database in the old format, for compatibility with versions of @code{locate} other than GNU @code{locate}. Using this option means that @code{locate} will not be able to properly handle -non-ASCII characters in filenames (that is, filenames containing +non-ASCII characters in file names (that is, file names containing characters which have the eighth bit set, such as many of the characters from the ISO-8859-1 character set). @item --help -Print a summary of the command-line argument format and exit. +Print a summary of the command line argument format and exit. @item --version Print the version number of @code{updatedb} and exit. @end table @@ -2830,12 +2830,12 @@ @table @code @item --arg-file@r{=@var{inputfile}} -@itemx -a @r{=@var{inputfile}} +@itemx -a o@r{@var{inputfile}} Read names from the file @var{inputfile} instead of standard input. @item --null @itemx -0 -Input filenames are terminated by a null character instead of by +Input file names are terminated by a null character instead of by whitespace, and the quotes and backslash are not special (every character is taken literally). Disables the end of file string, which is treated like any other argument. @@ -2886,7 +2886,7 @@ @item --max-chars=@var{max-chars} @itemx -s @var{max-chars} Use at most @var{max-chars} characters per command line, including the -command and initial arguments and the terminating nulls at the ends of +command, initial arguments and the terminating nulls at the ends of the argument strings. @item --verbose @@ -2914,9 +2914,9 @@ Security considerations are important if you are using @code{find} or @code{xargs} to search for or process files that don't belong to you -or over which other people have control. Security considerations +or which other people have control. Security considerations relating to @code{locate} may also apply if you have files which you -may not want others to see. +do not want others to see. In general, the most severe forms of security problems affecting @code{find} and related programs are where third parties can bring @@ -2926,8 +2926,8 @@ be able to delete. It is also common for the system to periodically invoke @code{find} for housekeeping purposes. These invocations of @code{find} are particularly problematic from a security point of view -as these are often invoked by the superuser and search the whole file -system hierarchy. The severity of any associated problem depends on +as these are often invoked by the superuser and search the whole +filesystem hierarchy. The severity of any associated problem depends on what the system is going to do with the output of @code{find}. @menu @@ -2954,7 +2954,7 @@ @file{/home} or @file{/tmp}). @item Medium Risk -Systems where the actions of other users can create filenames chosen +Systems where the actions of other users can create file names chosen by them, but to which they don't have access while @code{find} is being run. This access might include leaving programs running (shell background jobs, @code{at} or @code{cron} tasks, for example). On @@ -2964,7 +2964,7 @@ @item Low Risk Systems to which untrusted parties do not have access, cannot create -filenames of their own choice (even remotely) and which contain no +file names of their own choice (even remotely) and which contain no security flaws which might enable an untrusted third party to gain access. Most systems do not fall into this category because there are many ways in which external parties can affect the names of files that @@ -2993,21 +2993,21 @@ @enumerate @item Define a security policy which defines who is allowed to do what -on your system +on your system. @item Seek competent advice on how to enforce your policy, detect breaches of that policy, and take account of any potential problems -that might fall outside the scope of your policy +that might fall outside the scope of your policy. @end enumerate @node Security Considerations for find -@section Security Considerations for find +@section Security Considerations for @code{find} Some of the actions @code{find} might take have a direct effect; these include @code{-exec} and @code{-delete}. However, it is also common to use @code{-print} explicitly or implicitly, and so if -@code{find} produces the wrong list of filenames, that can also be a +@code{find} produces the wrong list of file names, that can also be a security problem; consider the case for example where @code{find} is producing a list of files to be deleted. @@ -3037,7 +3037,7 @@ definition of the term ``race condition''} . Typically, an attacker might move or rename files or directories in -the hope that an action might be taken against a a file which was not +the hope that an action might be taken against a file which was not normally intended to be affected. Alternatively, this sort of attack might be intended to persuade @code{find} to search part of the filesystem which would not normally be included in the search @@ -3053,7 +3053,7 @@ @node Changing the Current Working Directory @subsection Changing the Current Working Directory -As find searches the file system, it finds subdirectories and then +As @code{find} searches the filesystem, it finds subdirectories and then searches within them by changing its working directory. First, @code{find} notices a subdirectory. It then decides if that subdirectory meets the criteria for being searched; that is, any @@ -3115,12 +3115,12 @@ Features enabled: D_TYPE O_NOFOLLOW(enabled) @end example -Here, you can see that I am running a version of find which was built +Here, you can see that I am running a version of @code{find} which was built from the development (CVS) code prior to the release of findutils-4.2.18, and that the D_TYPE and O_NOFOLLOW features are present. O_NOFOLLOW is qualified with ``enabled''. This simply means that the current system seems to support O_NOFOLLOW. This check is -needed because it is possible to build find on a system that defines +needed because it is possible to build @code{find} on a system that defines O_NOFOLLOW and then run it on a system that ignores the O_NOFOLLOW flag. We try to detect such cases at startup by checking the operating system and version number; when this happens you will see @@ -3148,8 +3148,8 @@ O_FOLLOW, it can be the case that the use of the @code{chdir()} system call can itself cause a new filesystem to be mounted at that point. This will cause @code{find}'s security check to fail. However, this -does not normally represent a security problem (since the automounter -configuration is normally set up by the system administrator). +does not normally represent a security problem, since the automounter +configuration is normally set up by the system administrator. Therefore, if the @code{chdir()} sanity check fails, @code{find} will check to see if a new filesystem has been mounted at the current directory; if so, @code{find} will issue a warning message and @@ -3169,7 +3169,7 @@ system has a filesystem mounted on an unresponsive NFS server, @code{find} will hang, waiting for the NFS server to respond. Worse, it does this even if the affected mount point is not within the -directory tree that find would have searched anyway. +directory tree that @code{find} would have searched anyway. This is very unfortunate. However, this problem only affects systems that have no support for O_FOLLOW. As far as I can tell, it is not @@ -3182,8 +3182,8 @@ @node Race Conditions with -exec @subsection Race Conditions with -exec -The @samp{-exec} action causes another program to be run. It is -passed the name of the file which is being considered at the time. +The @samp{-exec} action causes another program to be run. It passes +to the program the name of the file which is being considered at the time. The invoked program will then - normally - perform some action on that file. Once again, there is a race condition which can be exploited here. We shall take as a specific example the command @@ -3251,7 +3251,7 @@ @end example does not cope correctly with newlines or other ``white space'' in -filenames, and copes poorly with filenames containing quotes, the +file names, and copes poorly with file names containing quotes, the @samp{-print} action is less secure even than @samp{-print0}. @@ -3268,7 +3268,7 @@ However, there are other security issues that exist even if it is not possible for an attacker to have access to the filesystem in real time. Firstly, if it is possible for an attacker to create files with -names of their own choice on the filesystem, then @code{xargs} is +names of their choice on the filesystem, then @code{xargs} is insecure unless the @samp{-0} option is used. If a file with the name @file{/home/someuser/foo/bar\n/etc/passwd} exists (assume that @samp{\n} stands for a newline character), then @code{find ... -print} @@ -3285,8 +3285,8 @@ files, the @file{/etc/passwd} file would be included even if this was not the intent of the person running find. There are circumstances in which an attacker can use this to their advantage. The same -consideration applies to filenames containing ordinary spaces rather -than newlines, except that of course the list of filenames will no +consideration applies to file names containing ordinary spaces rather +than newlines, except that of course the list of file names will no longer contain an ``extra'' newline. This problem is an unavoidable consequence of the default behaviour of @@ -3294,8 +3294,8 @@ The only ways to avoid this problem are either to avoid all use of @code{xargs} in favour for example of @samp{find -exec} or (where available) @samp{find -execdir}, or to use the @samp{-0} option, which -ensures that @code{xargs} considers filenames to be separated by ASCII -NUL characters rather than whitespace. However, useful though this +ensures that @code{xargs} considers file names to be separated by ASCII +NUL characters rather than whitespace. However, useful as this option is, the POSIX standard does not make it mandatory. @comment node-name, next, previous, up @@ -3305,7 +3305,7 @@ 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 ... -print}. -Although the problems relating to whitespace in filenames can be +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 ... -print0}. There is no way to avoid these problems in the case of @code{locate}. @@ -3320,14 +3320,14 @@ @table @asis @item Informational use only -Uses where the programs are used to prepare lists of filenames upon which no further action will ever be taken. +Uses where the programs are used to prepare lists of file names upon which no further action will ever be taken. -@item -delete -Use of the @samp{-delete} action to delete files which meet +@item @samp{-delete} +Use of the @samp{-delete} action with @code{find} to delete files which meet specified criteria -@item -execdir -Use of the @samp{-execdir} action where the @env{PATH} +@item @samp{-execdir} +Use of the @samp{-execdir} action with @code{find} where the @env{PATH} environment variable contains directories which contain only trusted programs. @end table @@ -3336,7 +3336,7 @@ @node Error Messages, Primary Index, Security Considerations, Top @chapter Error Messages -This section describes some of the error messages you might get from +This section describes some of the error messages sometimes made by @code{find}, @code{xargs}, or @code{locate}, explains them and in some cases provides advice as to what you should do about this. @@ -3344,8 +3344,8 @@ features translated error messages for many languages. For this reason where possible we try to make the error messages produced by the programs self-explanatory. This approach avoids asking people to -figure out which English-language error message the test they actually -saw might correspond to. Error messages which are self-explanatory +figure out which English-language error message +corresponds to a test. Error messages which are self-explanatory will not normally be described or discussed in this document. For those messages which are discussed in this document, only the English-language version of the message will be listed. @@ -3358,7 +3358,7 @@ @end menu @node Error Messages From find, Error Messages From xargs, , Error Messages -@section Error Messages From find +@section Error Messages From @code{find} @table @samp @item invalid predicate `-foo' @@ -3393,7 +3393,7 @@ @item /path/foo changed during execution of find (old device number 12345, new device number 6789, filesystem type is ) [ref XXX] This message is issued when @code{find} changes directory and ends up somewhere it didn't expect to be. This happens in one of two -circumstances. Firstly this happens when ``automount'' does its thing +circumstances. Firstly, this happens when ``automount'' does its thing on a system where @code{find} doesn't know how to determine what the current set of mounted filesystems is @@ -3414,7 +3414,7 @@ is different to the inode number that it obtained when it examined the directory some time previously. This normally means that while @code{find} has been deep in a directory hierarchy doing something -time consuming, somebody has moved the one of the parent directories +time consuming, somebody has moved one of the parent directories to another location in the same filesystem. This may have been done maliciously, or may not. In any case, @code{find} stops at this point in order to avoid traversing parts of the filesystem that it wasn't @@ -3430,7 +3430,7 @@ @code{configure}, but which doesn't work properly. @item cannot fork -This normally happens if you use the @code{-exec} action or a +This normally happens if you use the @code{-exec} action or something similar (@code{-ok} and so forth) but the system has run out of free process slots. This is either because the system is very busy and the system has reached its maximum process limit, or because you @@ -3450,18 +3450,22 @@ @table @samp @item environment is too large for exec -This message means that you have so many environment variables set -(or such large values for them) that there is no room within the -system-imposed limits on program command-line argument length to -invoke any program. I'm sure you did this deliberately. Please try -unsetting some environment variables, or exiting the current shell. +This message means that you have so many environment variables set (or +such large values for them) that there is no room within the +system-imposed limits on program command line argument length to +invoke any program. This is an unlikely situation and is more likely +result of an attempt to test the limits of @code{xargs}, or break it. +Please try unsetting some environment variables, or exiting the +current shell. @item can not fit single argument within argument list size limit You are using the @samp{-i} option and @code{xargs} doesn't have -enough space to build a command line because it has read in a really +enough space to build a command line because it has read a really large item and it doesn't fit. You can probably work around this problem with the @samp{-s} option, but the default size is pretty -large. You must be trying pretty hard to break @code{xargs}. +large. This is a rare situation and is more likely an attempt to test +the limits of @code{xargs}, or break it. Otherwise, you will need to +try to shorten the problematic argument or not use @code{xargs}. @item cannot fork See the description of the similar message for @code{find}. @@ -3477,7 +3481,7 @@ @end table @node Error Messages From locate, Error Messages From updatedb, Error Messages From xargs, Error Messages -@section Error Messages From locate +@section Error Messages From @code{locate} @table @samp @item warning: database `/usr/local/var/locatedb' is more than 8 days old @@ -3503,7 +3507,7 @@ @section Error Messages From updatedb The @code{updatedb} program (and the programs it invokes) do issue -error messages, but none of them seem to me to be candidates for +error messages, but none of 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}.