Como usar os comandos Bash XARGS

Como usar os comandos Bash XARGS

“Xargs é um comando bash que permite a execução de vários comandos na mesma linha. Se os comandos tomam parâmetros ou argumentos como entrada, eles podem funcionar na mesma linha quando combinados com XARGs. Com o XARGS, você pode construir e executar vários comandos através da entrada padrão, pois os XARGs podem levar uma entrada e convertê -lo em um argumento de comando a ser usado pelo próximo comando.”

Para ajudá -lo a entender os XARGs e como você pode usá -lo, este artigo dará vários exemplos de uso do comando XARGS. Dê uma olhada!

Como usar o comando XARGS

Como você usa o comando XARGS depende do que você deseja alcançar. Se você usar xargs sem entrada, ele ecoará qualquer coisa que você digite no terminal depois de pressionar Ctrl + d

Manuseio de arquivos e diretórios usando XARGs

Se você deseja encontrar todos os arquivos com uma determinada extensão, você pode usar XARGS. Vamos ter um exemplo de uso de LS com XARGs para arquivos de texto.

$ encontre . -nome '*.txt '-Type f | Xargs ls

No comando acima, estamos usando o encontrar comando para pesquisar arquivos no diretório atual que possui um .Extensão txt.

Aqui está a saída

Se você deseja excluir todos os arquivos que encontramos usando o comando acima, você pode usar o comando abaixo.

$ encontre . -nome '*.txt '-Type f | XARGS RM -F

O -t Flag é para verbose.

Suponha que você queira criar vários diretórios onde você está adicionando a entrada da entrada padrão. Poderíamos combinar mkdir com eco, Como no exemplo abaixo.

$ echo 'linux1 tech2 dir3 dir2' | Xargs mkdir

Se você quiser remover todos os diretórios no diretório atual, você pode usar XARGs, como mostrado abaixo.

$ encontre . -Tipo D | XARGS RM -R

Xargs Leitura de entrada de um arquivo

Usando o -a Flag, você pode instruir XARGs a ler itens de um arquivo, como no caso abaixo.

Com o mesmo exemplo, podemos demonstrar como combinar vários comandos usando XARGs. Para isso, use o -EU bandeira.

Por exemplo, poderíamos usar o comando abaixo para ler o conteúdo de um arquivo e criar um diretório usando todas as strings no arquivo.

$ cat 1.txt | xargs -i % mkdir %

Você pode levar o comando adiante para ecoar o conteúdo do arquivo enquanto cria o diretório adicionando o Comando Echo, como mostrado abaixo.

$ cat 1.txt | xargs -i % sh -c 'eco %; mkdir %'

Usando Xargs com grep

O comando Grep é usado para corresponder padrões e, quando você deseja procurar uma determinada string em vários arquivos, você pode usar XARGs para combinar encontrar com grep, onde a saída de encontrar será convertido para a entrada para ser usado por grep.

Aqui está um exemplo em que encontramos todos os arquivos de texto que contêm a string “Linuxhint.”

$ encontre . -nome '*.txt '| Xargs Grep 'Linuxhint'

Limitando a saída por linha

Suponha que você queira ler o conteúdo de um arquivo. Você pode limitar o número de saídas para cada linha usando o -n opção.

Vamos ter um exemplo de impressão em um determinado intervalo usando o Seq comando e limite a saída por linha a 4

$ seq 1 30 | XARGS -N 4

Especificando o delimitador

Por padrão, Xargs assume um espaço em branco como delimitador. No entanto, se você precisar usar outro delimitador, deve usar o -d comando seguido pelo delimitador.

Aqui está um exemplo que usa um cólon como delimitador ao trabalhar com um arquivo para ler seu conteúdo e criar diretórios usando as strings no arquivo.

Aqui estão o conteúdo do nosso arquivo.

Agora, vamos executar o comando abaixo.

$ nomes de gatos.txt | XARGS -D: | Xargs -t mkdir

A saída seria:

O delimitador nulo

Se tentássemos usar XARGs com arquivos com espaço em branco nos nomes, ele traria resultados incorretos, pois o XARGS usa espaço em branco como seu delimitador. Nesse caso, devemos usar o -0 Flag, que sinaliza Xargs para usar o Delimitador Nulo. Além disso, precisamos do -print0 Flag, que é usado pelo Find para indicar uma lista separada por nulo.

Por exemplo, suponha que tivéssemos os arquivos de imagem abaixo.

Se tentássemos excluir todos os arquivos usando o comando abaixo, XARGS apenas imprimiria os arquivos de imagem sem espaço em seu nome, como mostrado abaixo.

$ encontre . -nome '*.png '-Type f | XARGS RM -F

Para superar isso, precisamos usar a bandeira -0 e o -print0.

$ encontre . -nome '*.png '-Type f -Print0 | XARGS -0 RM -F

Podemos verificar se excluímos com sucesso todos os arquivos.

Conclusão

Este guia cobriu o comando Bash Xargs em profundidade, dando exemplos de como usá-lo para alcançar vários aspectos. Referenciando os exemplos apresentados, você pode implementar XARGs do seu lado para executar várias tarefas. Além disso, verifique a página do homem para XARGS para obter mais detalhes de uso.