De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.


O comando xargs (2)

Colaboração: Rubens Queiroz de Almeida

Data de Publicação: 21 de Agosto de 1997

Qual a diferença entre os comandos abaixo?

$ find . -user queiroz  -exec ls {} \;
$ find . -user queiroz -print | xargs ls

A diferença é que no primeiro find o comando ls é executado uma vez para cada arquivo encontrado. Se forem encontrados 1000 arquivos o comando ls será executado 1000 vezes.

Já no segundo exemplo, com a saída do find redirecionada para o comando xargs, o comando ls será executado sobre um grupo de arquivos de cada vez e não uma vez para cada arquivo. O que determinará o número de vezes que o comando xargs executará o comando ls é justamente o tamanho da linha de comandos.

O comando xargs dividirá a saída gerada pelo comando find em blocos compatíveis com a capacidade do sistema de maneira a que não ocorra um erro quando da execução, em nosso caso, do comando ls.

Em outras palavras, suponhamos que o comando find descubra 2000 arquivos sobre os quais o comando xargs deverá executar o comando ls. O limite máximo de arquivo sobre os quais o comando ls pode atuar é de 500. O comando xargs automaticamente realizará a divisão desta entrada em quatro blocos de 500 arquivos.

Concluindo, o comando xargs é bem mais eficiente do que a diretiva -exec do comando find, por exigir menos recursos computacionais para executar a mesma tarefa.



Veja a relação completa dos artigos de Rubens Queiroz de Almeida