Como usar o comando xargs no Linux

Como usar o comando xargs no Linux

Para alguns dos usuários mais experientes, estamos sempre procurando encontrar novas maneiras de trabalhar de forma mais inteligente e não mais difícil no terminal. xargs é um comando útil que atua como uma ponte entre dois comandos, lendo a saída de um e executando o outro com os itens lidos. O comando é mais comumente usado em cenários quando um usuário está procurando por um padrão, removendo e renomeando arquivos e muito mais. Aqui, mostramos como usar o xargs comando a seu favor.

O que é xargs?

Em sua forma básica, xargs lê informações da entrada padrão (ou STDIN) e executa um comando uma ou mais vezes com os itens lidos. Existem muitas demonstrações simples, mas aqui está uma que mostra o que quero dizer.

Ter xargs execute o ls comando na minha pasta Documentos, eu executaria o seguinte comando:

A barra vertical | está canalizando tudo o que vem antes disso como STDIN para xargs.

Você pode ver isso xargs lê minha pasta de documentos sem problemas. Este é apenas um exemplo das capacidades do xargs comando.

Enquanto o xargs pode ser usado em várias operações de linha de comando, ele é realmente útil quando usado com o find comando. Neste artigo, discutimos alguns exemplos úteis para entender como xargs e find podem ser usados ​​juntos.

Operações envolvendo vários arquivos

Suponha que você queira copiar o conteúdo de “ref.txt” para todos os arquivos de texto presentes em um diretório. Embora a tarefa possa exigir que você execute vários comandos, o xargs comando, junto com o find comando, torna-o simples. Eu tenho alguns diretórios de teste. Um tem “test0.txt”, que contém texto, e o outro diretório tem outros 10 arquivos de teste sem texto. Se eu quisesse pegar o conteúdo de test0.txt e copiar para o resto dos arquivos de texto nos outros diretórios, eu executaria o seguinte comando:

Xargs Encontrar Cp

Para entender o comando mostrado acima, vamos dividi-lo em duas partes.

A primeira parte é find ./test-dir1/ -name "*.txt" , que procura todos os arquivos .txt presentes no diretório “test-dir1”. Você pode especificar qualquer diretório aqui.

A segunda parte, xargs -n1 cp test.txt, obterá a saída do primeiro comando (os nomes dos arquivos resultantes) e a entregará ao cp (copiar) comando um por um. Observe que o -n opção é crucial aqui, pois instrui xargs para usar um argumento por execução.

Quando combinados, o comando completo copiará o conteúdo de “test0.txt” para todos os arquivos .txt no diretório.

Prova Xargs Cp

Operações que envolvem grande número de argumentos

Uma das principais vantagens de usar xargs é sua capacidade de lidar com um grande número de argumentos. Por exemplo, ao excluir um grande número de arquivos de uma vez, o rm comando às vezes falhava com um “Lista de argumentos muito longa”Erro. Isso porque ele não poderia simplesmente lidar com uma lista tão longa de argumentos. Geralmente, esse é o caso quando você tem muitos arquivos na pasta que deseja excluir.

Digamos que você tenha 75 PDFs e esteja recebendo um erro ao tentar excluí-los.

Xargs Pdfs

Isso pode ser facilmente corrigido com xargs. Para excluir todos esses arquivos, use o seguinte comando:

Xargs Rm F

Operações que envolvem a pesquisa de padrões

Os desenvolvedores de software, bem como os administradores de sistema, fazem muitas pesquisas de padrões enquanto trabalham na linha de comando. Por exemplo, um desenvolvedor pode querer dar uma olhada rápida nos arquivos do projeto que modificam uma determinada variável, ou um administrador do sistema pode querer ver os arquivos que usam um determinado parâmetro de configuração do sistema. Nestes cenários, xargs, junto com find e grep, facilita as coisas para você.

Por exemplo, para pesquisar todos os arquivos “.txt” que contêm a string “maketecheasier”, execute o seguinte comando:

Aqui está a saída que o comando produziu em meu sistema.

Xargs Grep Mte

Operações de corte / cópia

Xargs, juntamente com o find comando, também pode ser usado para copiar ou mover um conjunto de arquivos de um diretório para outro. Por exemplo, para mover todos os arquivos de texto com mais de 10 minutos do diretório atual para o diretório anterior, use o seguinte comando:

O -I opção de linha de comando é usada pelo xargs comando para definir uma string de substituição que é substituída por nomes lidos a partir da saída do find comando. Aqui, a string de substituição é {}, mas pode ser qualquer coisa. Por exemplo, você pode usar “arquivo” como uma string de substituição.

Como dizer ao xargs quando sair

Suponha que você queira listar os detalhes de todos os arquivos .txt presentes no diretório atual. Conforme já explicado, isso pode ser feito facilmente usando o seguinte comando:

Mas há um problema: o xargs comando irá executar o ls comando mesmo se o find comando falha em encontrar qualquer arquivo .txt. A seguir está um exemplo.

Xargs Encontrar Txt Pngs

Você pode ver que não há arquivos .txt no diretório, mas isso não parou xargs de executar o ls comando. Para alterar esse comportamento, use o -r opção de linha de comando:

Conclusão

Embora eu tenha me concentrado aqui em usar xargs com find, ele também pode ser usado com muitos outros comandos. Se você tiver vários comandos complexos que precisa executar, xargs é uma ferramenta muito útil.

Se você gostou do nosso artigo sobre como usar o xargs no Linux, certifique-se de verificar alguns de nossos outros conteúdos do Linux, como nossos guias sobre como consertar o erro “nenhum espaço deixado no dispositivo” ou acelerar o Ubuntu.

Relacionado:

  • Guia do iniciante para contêineres de Podman no Linux
  • Como configurar e usar SSH no Linux
  • Como executar comandos Bash em segundo plano no Linux
Rolar para cima