xargs - Construct an argument list and run a command
Format
xargs [-I placeholder] [-i [placeholder]] [-L number] [-l [number]] [-n number] [ -ptx] [-E [eofstr]] [-e [eofstr]] [-s size] [command [argument ...]]
Description
The xargs command line typically contains the skeleton, or template, of another command. This template looks like a normal command, except that it lacks some arguments. xargs adds arguments from standard input (the standard input) to complete the command, then runs the resulting command. If more input remains, it repeats this process.
In a double-byte locale, some options may accept a double-byte string as an argument. In these cases, an incorrect double-byte string would be detected during command-line parsing.
The maximum length of a constructed command is LINE_MAX bytes.
Options
- -I placeholder
- Specifies that each line in the standard input (the standard input) is to be considered as a
single argument. The placeholder following the -I is a
string that can appear multiple times in the command template. xargs strips the
input line of any leading white space characters and inserts it in place of the
placeholder string. For example, with:
xargs -I '{}' mv dir1/'{}' dir2/ '{}'
The standard input should consist of lines giving names of files that you want moved from
dir1
todir2
. xargs substitutes these names for the{}
placeholder in each place that it appears in the command template.When xargs creates arguments for the template command, no single argument can be longer than 255 characters after the input has replaced the placeholders. The -x option is automatically in effect if -I or -i is used. If you omit the placeholder string, it defaults to the string{ }
. Thus we could write our preceding example as:xargs -i mv dir1/ '{}' dir2/ '{}'
In a double-byte locale, placeholder may contain double-byte characters.
- -i placeholder
- Behaves like -I , except that the placeholder is
optional. If you omit the placeholder string, it defaults to the string {
}. Thus, the previous example could be written as:
xargs -i mv dir1/ '{{ ' dir2/'{ } ' xargs -i /{}/ mv dir1/ '{}' dir2/ '{}
- -L number
- Specifies that xargs read number lines from the
standard input and concatenate them into one long string (with a blank separating each of the
original lines). xargs then appends this string to the command template and runs
the resulting command. This process is repeated until xargs reaches the end of
the standard input if there are fewer than number lines left in the file
the last time the command is run, xargs just uses what is there.
With this option, a line must contain at least one nonblank character; blank lines are skipped and do not count toward the number of lines being added to the template. xargs considers a line to end at the first newline character, unless the last character of the line is a blank or a tab; in this case, the current line is considered to extend to the end of the next non-empty line.
If you omit the -L or -l option, the default number of lines read from the standard input is
1
. The -x option is automatically in effect if -l is used. - -l number
- Acts like the -L option, but the number argument is optional. number defaults to 1.
- -n number
- Specifies xargs is to read the given number of arguments from the standard
input and put them on the end of the command template. For example:
xargs -
If you do not specify the -n option, the default number of arguments read from the standard input is 1.
ls | xargs echo
prints the
names of files in the working directory as one long line. When you
invoke xargs this way, the total length
of all arguments must be less than the size specified by the -s option.If no command template appears on the command line, xargs uses echo by default. When xargs runs a command, it uses your search rules to find the command; this means that you can run shell scripts as well as normal programs.
The command you want to execute should be in your search $PATH.
xargs ends prematurely if it cannot run a constructed command or if an executed command returns a nonzero status.
If an executed command is a shell program, it should explicitly contain an exit command to avoid returning a nonzero by accident; see sh for details.
- -E [eofstr]
- Defines eofstr to represent end-of-file on the standard input. For
example:
tells xargs that-E :::
:::
represents the end of the standard input, even if an input file continues afterward. If there is no -E or -e option, a single underscore (_
) marks the end of the input.In a double-byte locale, eofstr may contain double-byte characters.
- -e [eofstr]
- Acts like -E but the eofstr argument is optional. If you specify -e without eofstr, there is no end-of-file marker string, and _ is taken literally instead of as an end-of-file marker. xargs stops reading input when it reaches the specified end-of-file marker or the true end of the file.
- -p
- Prompts you before each command. This option turns on the -t option so that you
see each constructed command before it is run. Then xargs displays
?...
, asking if you really want to run this command. If you type a string beginning withy
, xargs runs the command as displayed; otherwise, the command is not run, and xargs constructs a new command. - -s size
- Sets the maximum allowable size of an argument list to size bytes (where size is an integer). The value of size must be less than or equal to the system variable LINE_MAX. If you omit the -s option, the default allowable size of an argument list is LINE_MAX. The length of the argument list is the length of the entire constructed command; this includes the length of the command name, the length of each argument, plus one blank for separating each item on the line.
- -t
- Writes each constructed command to stderr just before running the command.
- -x
- Kills xargs if it creates a command that is longer than the size given by the -s option (or {LINE_MAX} is -s was not specified). This option comes into effect automatically if you specify -i or -l.
Examples
ls | xargs -n 3 echo
Localization
- LANG
- LC_ALL
- LC_CTYPE
- LC_MESSAGES
- LC_SYNTAX
- NLSPATH
Exit values
0
- Successful completion of all commands
1-125
- Failure due to any of the following:
- xargs could not assemble a command line.
- One or more invocations of command returned a nonzero exit status.
- Some other error occurred.
126
- xargs found command but could not invoke it.
127
- xargs could not find command.
Portability
POSIX.2, X/Open Portability Guide, UNIX systems.
The -e, -E, -i, -l, -l, -L, and -p options are extensions of the POSIX standard.
Related information
echo, find, sh