O argumento -I
funciona assim: -I whatever
significa que ocorrências literalmente de whatever
são substituídas pelo argumento de comando. Demonstração:
$ echo "a
b
c" | xargs -I f echo hey f hey f
hey a hey a
hey b hey b
hey c hey c
Veja? xargs
pegou cada uma das linhas a
, b
e c
e as substituiu no lugar de f
em echo hey f hey f
.
Não há {}
envolvido.
A opção -I
é POSIX. O GNU xargs
documenta uma opção -i
preterida que, se chamada como -iwhatever
, se comporta como -I whatever
. Se invocado como apenas -i
, ele se comportará como -I {}
. Nesse caso, ocorrências de {}
são substituídas. {}
é claramente inspirado por um recurso do find
: its -exec
predicado.
A sintaxe {a..b}
e foo{a,b,c}bar
Bash processada por sua "expansão de contraventamento". {}
não tem significado especial e é passado para um comando como está. (Se não fosse, ele quebraria as invocações find
de conformidade padrão, comumente.)