Call a program one time for each argument w/ xargs
Generally, I've used xargs
in combination with programs like kill
or echo
both of which accept a variable number of arguments. Some programs only accept one argument.
For lack of a better example, lets try adding 1 to 10 numbers. In shell environments you can add with the expr
command.
> expr 1 + 1
2
I can combine this with seq
and pass the piped values from seq
to expr
with xargs
.
> seq 10 | xargs expr 1 +
expr: syntax error
In the above, instead of adding 1 to 1 and then 1 to 2, it trys to run:
expr 1 + 1 2 3 4 5 6 7 8 9 0
Syntax Error!
We can use the -n
flag to ensure that only one argument is applied at time and the command runs 10 times.
> seq 10 | xargs -n1 expr 1 +
2
3
4
5
6
7
8
9
10
11
For more insight into what's being called, use the -t
flag to see the commands.