Você pode tentar isso sozinho
$ echo -n a b c d e f g | xargs -I x -d " " echo x x x
a a a
b b b
c c c
d d d
e e e
f f f
g g g
Do manual:
-I replace-str
Replace occurrences of replace-str in the initial-arguments with names read from standard input. Also, unquoted blanks do not terminate input items; instead the separator is the newline character. Implies -x and -L 1.-L max-lines
Use at most max-lines nonblank input lines per command line. Trailing blanks cause an input line to be logically continued on the next input line. Implies -x.
Portanto, -I
implica -L 1
, o que significa que apenas um argumento é usado para cada chamada. Como você pode ver, cada ocorrência de x
é substituída pelo argumento.
Há também um efeito que pode ser surpreendente no começo:
$ echo a b c d e f g | xargs -I x -d " " echo x x x
a a a
b b b
c c c
d d d
e e e
f f f
g
g
g
Sem a opção -n
, o eco produzirá uma nova linha no final. Com a opção -d
, xargs
não considerará a nova linha como um separador, em vez disso, faz parte do argumento, portanto, as quebras de linha na saída de g\n
: g\n g\n g\n
.