Assine a Lista Dicas-L
Receba diariamente por email as dicas
de informática publicadas neste site
Para se descadastrar, clique aqui.
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 irá determinar o número de vezes que o comando xargs executará o comando ls é justamente o tamanho da linha de comandos. O comando xargs irá 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 (ver a dica de ontem).
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. uma vez sobre todos os arquivos encontrados.
Referências Adicionais
Referências adicionais sobre os assuntos abordados neste site podem ser encontradas em nossa Bibliografia.




