O -I
requer um marcador de posição definido. A opção -i
assumirá {}
é o marcador de posição. Foi aqui que encontrei qualquer suposição de {} em man xargs
pelo menos em Cygwin e CentOS.
xargs chamados sem nenhuma das opções não precisam do marcador de posição e apenas anexam o STDIN ao final dos argumentos.
Basta adicionar echo
aos seus exemplos para ver o que o xargs está fazendo:
$ ls -1
Hello World/
Seu exemplo erroneamente usa {}
:
$ ls -1 | xargs echo file {}
file {} Hello World/
, então o file
cmd vê argumentos de {} Hello World
e erros.
Se você quiser usar explicitamente {}
em sua chamada xargs:
$ ls -1 | xargs -i echo file {}
file Hello World/
Ou sem espaço reservado:
$ ls -1 | xargs echo file
file Hello World/
xargs como chamado acima não precisa do {}. Acrescenta o STDIN ao final do comando sem um espaço reservado. O uso de {} geralmente significa que você quer que o STDIN esteja em algum lugar no meio do cmd para executar, como em:
$ ls -1 | xargs -i mv {} /path/to/someplace/.