você está aqui: Home  → Arquivo de Mensagens

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