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.