Nem todos os programas recebem entrada. O comando ls pode pegar um diretório ou um arquivo como um argumento (por exemplo, ls /etc ), mas você não pode canalizar ( | ) para ele. Então, o primeiro comando é o mesmo que fazer:
$ find ~/Downloads -iname *btsync*
$ ls -al
O canal é ignorado porque ls não tem como ler a entrada padrão. xargs , por outro lado, faz algo completamente diferente. Ele lê a entrada padrão e, em seguida, executa o comando que você fornece em cada linha da entrada. De man xargs :
Portanto, xargs receberá cada resultado do comando find e executará ls , o que você deseja.