Comando xargs – Construir e executar linhas de comando no Linux

Comando xargs no Linux

O comando xargs é utilizado para construir e executar linhas de comandos no Linux. É comum precisarmos passar uma lista de itens para um comando que é maior do que o shell pode trabalhar. O comando xargs pode ser utilizados para efetuar uma divisão dessa lista em sub-listas menores, e passar os argumentos ao comando requisitado, em partes.

Sintaxe do xargs:

xargs [opções] [comando] [argumentos-iniciais]

O comando é executado, seguido pelos seus argumentos iniciais (opcionais), e outros argumentos adicionais podem ser adicionados a partir da entrada padrão. Geralmente, os argumentos adicionais são nomes de arquivos em grande quantidade. O xargs executa então o comando múltiplas vezes, de modo a processar todos os argumentos da entrada padrão.

Opções comuns:

-n maxargs
Limita o número de argumentos adicionais em maxargs para cada chamada de comando
-p
Modo interativo. Pede ao usuário confirmação para cada execução do comando.
-a arquivo
Lê itens de um arquivo em vez da entrada padrão

Exemplos

1. Por padrão, o comando xargs espera a entrada a partir de stdin, e então executa o comando /bin/echo nesta entrada. Vamos executá-lo sem especificar nenhum parâmetro ou comando, e então entrar com a string “Bóson Treinamentos”:

$ xargs

Comando xargs sem parâmetros - LPIC

Vamos pressionar agora ctrl+d, o que irá então ecoar o texto digitado de volta em stdout:

Comando xargs - Bóson Treinamentos com echo - Linux

Note que o texto digitado foi simplesmente ecoada de volta no terminal.

2. Vamos agora controlar o comando echo com o xargs, porém dividindo a execução do comando em três linhas, cada uma com dois caracteres. Em outras palavras, iremos passar uma lista de caracteres para serem exibidos pelo comando echo, mas o xargs irá dividir essa lista e executar o echo diversas vezes, cada uma com um número especificado de argumentos:

$ echo 1 2 3 4 5 6 | xargs -n 3

Comando xargs e echo no Linux - LPI 1

Em vez do comando echo exibir a sequência de caracteres em um linha, ele foi invocado três veze pelo xargs, e exibiu dois caracteres por vez.

Podemos também usar o comando seq para gerar os números de 1 a 6 passados para o xargs:

$ seq 6 | xargs -n 3

3. Usando o comando grep para encontrar a palavra “fabio” em uma lista grande de arquivos a partir do diretório home do sistema, vasculhando um por um:

$ find /home -type f | xargs -n 1 grep fabio

Comando xargs no Linux - LPIC 1

Neste exemplo o comando find procura arquivos normais (-type f) iniciando no diretório /home. O xargs executa o comando grep uma vez para cada arquivo encontrado (-n 1). O comando grep irá mostrar as ocorrências de arquivos onde a palavra procurada foi encontrada.

5. Considere um arquivo de nome “arqs”, que contém uma lista de palavras, uma por linha. Queremos criar diversos arquivos de texto, usando as palavras listadas em “arqs” como nomes  desses arquivos. Vamos usar o comando xargs para ler a lista de nomes em arqs e invocar o comando touch quantas vezes forem necessárias para criar todos os arquivos desejados.

Veja o conteúdo de arqs:

Comando cat e listagem de um arquivo no linux

Vamos agora usar o comando xargs para criar sete arquivos, um com cada nome listado no arquivo arqs:

$ cat arqs | xargs touch

Comandos xargs, touch e cat no Linux - LPI 1

Usando o comando ls pudemos verificar que os sete arquivos foram criados no diretório atual.

6. Vamos agora excluir todos os arquivos no diretório atual cujo nome se inicia com a letra “p”. Para isso, vamos combinar o comando xargs com rm e find:

$ find . -name “p*” | xargs rm -rf

Comando xargs combinado com find e rm no Linux

Note que os arquivos iniciados com a letra “p” foram excluídos do diretório atual.

7. Excluir os arquivos temporários no diretório /tmp e subdiretórios:

$ find /tmp  -name “*.tmp” | xargs rm -rf

Excluir temporários com xargs e find no Linux

O comando xargs é muito rápido se compararmos a exclusão de arquivos com o uso do comando find com exec apenas, excluindo um arquivo por vez.

8. Alterar as permissões de acesso de vários arquivos de uma vez. Suponha que existam três arquivos em nosso sistema, de nomes arq1, arq2 e arq3, com as permissões padrão mostradas a seguir:

Comando xargs - alterar permissões com chmod

Vamos dar permissão de execução nestes três arquivos de uma vez usando o xargs e o comando ls -1, que lista o conteúdo do diretório em uma coluna:

$ ls -1 ar* | xargs -n 1 chmod 775

Veja o resultado:

Alterando permissões com xargs e chmod no Linux - LPI 1

Para maiores informações sobre o comando xargs e uma lista completa de suas opções, consulte as páginas de manual do comando com man xargs.

Sobre Fábio dos Reis (1195 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 30 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Ciência e Tecnologia em geral, adora Viagens e Música, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.

Escreva um comentário

Seu e-mail não será divulgado


*