Apenas além de fredtantini e como um esclarecimento geral (já que os documentos são um pouco confusos):
O xargs -I {} pegará os caracteres '{}' da entrada padrão e os substituirá pelo que vier do cano. Isso significa que você pode substituir {} por qualquer combinação de caracteres (talvez para melhor adequar seu sabor de programação preferido). Por exemplo : xargs -I % sh -c "echo %" . Se você sempre usar o xargs -I {} , poderá substituí-lo por xargs -i , pois é a abreviação.
O sh -c dirá ao seu bash / shell para ler o próximo comando de uma string e não da entrada padrão. Portanto, escrever sh -c "echo something" é equivalente a echo something .
O xargs -I {} sh -c "echo {}" lerá a entrada criada com sh -c , que é echo {} . Desde que você disse para substituir {} com os argumentos que você obteve do pipe, é o que acontecerá.
Você pode facilmente testar isso mesmo sem canalizar, basta digitar o comando acima em um terminal. Tudo o que você escrever em seguida será enviado para o terminal (Ctrl-D para sair).
No comando ls -la {} , a mesma coisa acontece novamente. O {} é substituído pelo conteúdo do comando pré-pipe.