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:
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
Vamos pressionar agora ctrl+d, o que irá então ecoar o texto digitado de volta em stdout:
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
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
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:
Vamos agora usar o comando xargs para criar sete arquivos, um com cada nome listado no arquivo arqs:
$ cat arqs | xargs touch
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
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
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:
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:
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.
Escreva um comentário