O que o xargs faz exatamente?

-2

Eu não entendo exatamente o que xargs faz e é por isso que me surpreende por que esses 2 retornam resultados diferentes:

find ~/Downloads -iname *btsync* | ls -al
find ~/Downloads -iname *btsync* | xargs ls -al

Por que o primeiro não retorna o que eu quero? Em vez disso, imprime todos os arquivos no diretório atual.

    
por アレックス 21.04.2014 / 18:11

1 resposta

2

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 :

% bl0ck_qu0te%

Portanto, xargs receberá cada resultado do comando find e executará ls , o que você deseja.

    
por terdon 21.04.2014 / 18:18