NAME
xargs —
construct argument list(s) and
execute utility
SYNOPSIS
xargs |
[-0oprt]
[-E
eofstr]
[-I replstr
[-R
replacements]
[-S
replsize]]
[-J
replstr]
[-L
number]
[-n number
[-x]]
[-P
maxprocs]
[-s size]
[utility
[argument ...]] |
DESCRIPTION
The
xargs utility reads space, tab, newline and end-of-file
delimited strings from the standard input and executes
utility with the strings as arguments.
Any arguments specified on the command line are given to
utility upon each invocation, followed by some number of
the arguments read from the standard input of
xargs. This is
repeated until standard input is exhausted.
Spaces, tabs and newlines may be embedded in arguments using single
(`` ' '') or double (``"'') quotes or backslashes (``\'').
Single quotes escape all non-single quote characters, excluding newlines, up
to the matching single quote. Double quotes escape all non-double quote
characters, excluding newlines, up to the matching double quote. Any single
character, including newlines, may be escaped by a backslash.
The options are as follows:
-
-
- -0
- Change xargs to expect NUL (``\0'')
characters as separators, instead of spaces and newlines. This is expected
to be used in concert with the -print0 function in
find(1).
-
-
- -E
eofstr
- Use eofstr as a logical EOF
marker.
-
-
- -I
replstr
- Execute utility for each input line,
replacing one or more occurrences of replstr in up
to replacements (or 5 if no -R
flag is specified) arguments to utility with the
entire line of input. The resulting arguments, after replacement is done,
will not be allowed to grow beyond replsize (or 255
if no -S flag is specified) bytes; this is implemented
by concatenating as much of the argument containing
replstr as possible, to the constructed arguments to
utility, up to replsize bytes.
The size limit does not apply to arguments to
utility which do not contain
replstr, and furthermore, no replacement will be
done on utility itself. Implies
-x.
-
-
- -J
replstr
- If this option is specified, xargs will
use the data read from standard input to replace the first occurrence of
replstr instead of appending that data after all
other arguments. This option will not affect how many arguments will be
read from input (-n), or the size of the command(s)
xargs will generate (-s). The option
just moves where those arguments will be placed in the command(s) that are
executed. The replstr must show up as a distinct
argument to xargs. It will not be
recognized if, for instance, it is in the middle of a quoted string.
Furthermore, only the first occurrence of the
replstr will be replaced. For example, the following
command will copy the list of files and directories which start with an
uppercase letter in the current directory to destdir:
/bin/ls -1d [A-Z]* | xargs -J % cp -rp %
destdir
-
-
- -L
number
- Call utility for every
number lines read. If EOF is reached and fewer lines
have been read than number then
utility will be called with the available
lines.
-
-
- -n
number
- Set the maximum number of arguments taken from standard
input for each invocation of utility. An invocation
of utility will use less than
number standard input arguments if the number of
bytes accumulated (see the -s option) exceeds the
specified size or there are fewer than
number arguments remaining for the last invocation
of utility. The current default value for
number is 5000.
-
-
- -o
- Reopen stdin as /dev/tty in the child
process before executing the command. This is useful if you want
xargs to run an interactive application.
-
-
- -P
maxprocs
- Parallel mode: run at most maxprocs
invocations of utility at once.
-
-
- -p
- Echo each command to be executed and ask the user whether
it should be executed. An affirmative response,
‘
y
’ in the POSIX locale, causes the
command to be executed, any other response causes it to be skipped. No
commands are executed if the process is not attached to a terminal.
-
-
- -r
- Compatibility with GNU xargs. The GNU
version of xargs runs the utility
argument at least once, even if xargs input is empty,
and it supports a -r option to inhibit this behavior.
The NetBSD version of xargs does
not run the utility argument on empty input, but it
supports the -r option for command-line compatibility
with GNU xargs; but the -r option does
nothing in the NetBSD version of
xargs.
-
-
- -R
replacements
- Specify the maximum number of arguments that
-I will do replacement in. If
replacements is negative, the number of arguments in
which to replace is unbounded.
-
-
- -S
replsize
- Specify the amount of space (in bytes) that
-I can use for replacements. The default for
replsize is 255.
-
-
- -s
size
- Set the maximum number of bytes for the command line length
provided to utility. The sum of the length of the
utility name, the arguments passed to utility
(including
NULL
terminators) and the current
environment will be less than or equal to this number. The current default
value for size is ARG_MAX
-
4096.
-
-
- -t
- Echo the command to be executed to standard error
immediately before it is executed.
-
-
- -x
- Force xargs to terminate immediately if a
command line containing number arguments will not
fit in the specified (or default) command line length.
If
utility is omitted,
echo(1) is used.
Undefined behavior may occur if
utility reads from the
standard input.
The
xargs utility exits immediately (without processing any
further input) if a command line cannot be assembled,
utility cannot be invoked, an invocation of
utility is terminated by a signal, or an invocation of
utility exits with a value of 255.
FILES
- /dev/tty
- used to read responses in prompt mode
EXIT STATUS
xargs exits with one of the following values:
- 0
- All invocations of utility returned a
zero exit status.
- 123
- One or more invocations of utility
returned a nonzero exit status.
- 124
- The utility exited with a 255 exit
status.
- 125
- The utility was killed or stopped by
a signal.
- 126
- The utility was found but could not
be invoked.
- 127
- The utility could not be found.
- 1
- Some other error occurred.
SEE ALSO
echo(1),
find(1),
execvp(3)
STANDARDS
The
xargs utility is expected to be
IEEE Std
1003.2 (“POSIX.2”) compliant. The
-J,
-o,
-P,
-R, and
-S options are non-standard
FreeBSD
extensions which may not be available on other operating systems.
HISTORY
The
xargs utility appeared in PWB UNIX 1.0. It made its first
BSD appearance in the 4.3 Reno release.
The meaning of 123, 124, and 125 exit values and the
-0 option
were taken from GNU xargs.
BUGS
If
utility attempts to invoke another command such that
the number of arguments or the size of the environment is increased, it risks
execvp(3) failing with
E2BIG
.
The
xargs utility does not take multibyte characters into
account when performing string comparisons for the
-I and
-J options, which may lead to incorrect results in some
locales.