Linux Commands · 7 min read · Sep 20, 2025
8 Exemplos Práticos do Comando Xargs do Linux para Iniciantes

O comando Linux xargs pode não ser uma ferramenta de linha de comando muito popular, mas isso não muda o fato de que é extremamente útil, especialmente em combinação com outros comandos como find e grep. Se você ainda não conhece o xargs e quer entender seu uso, ficará feliz em saber que vamos fazer exatamente isso aqui.
Antes de prosseguir, por favor, tenha em mente que todos os exemplos apresentados neste tutorial foram testados no Ubuntu 22.04 LTS. O shell usado no meu sistema é o Bash.1. Como funciona o comando Xargs?
Bem, antes de pular para seu uso, é importante entender o que exatamente o Xargs faz. Em termos simples, a ferramenta - em sua forma mais básica - lê dados da entrada padrão (stdin) e executa o comando (fornecido a ele como um argumento) uma ou mais vezes com base na entrada lida. Quaisquer espaços em branco e espaços na entrada são tratados como delimitadores, enquanto linhas em branco são ignoradas.
Se nenhum comando for fornecido como argumento para o xargs, o comando padrão que a ferramenta executa é echo. Por exemplo, no seguinte exemplo, eu apenas executei ‘xargs’ e digitei ‘Hello World’ no stdin. Ao pressionar Ctrl+D (para informar ao xargs que terminamos com a entrada), o comando echo foi executado automaticamente, e ‘Hello World’ foi impresso novamente.
2. Como usar xargs com outro comando?
Enquanto echo é o comando padrão que o xargs executa, você pode especificar explicitamente qualquer outro comando. Por exemplo, você pode passar o comando find junto com sua opção ‘-name’ como um argumento para o xargs, e então passar o nome do arquivo (ou tipo de arquivos) que você deseja encontrar para pesquisar como entrada através do stdin.
Aqui está o comando completo em questão:
xargs find -namePor exemplo, fornecemos “.txt” na entrada através do stdin, o que significa que queremos que o comando find* pesquise todos os arquivos .txt no diretório atual (bem como em seus subdiretórios).
Aqui está o comando em ação:
3. Como fazer o xargs executar o comando várias vezes (uma vez para cada linha/argumento de entrada)
No exemplo que discutimos na seção anterior, queríamos pesquisar arquivos .txt, então fornecemos “*.txt” na entrada. Mas e se a necessidade for também pesquisar outros tipos de arquivos, como .log e .tmp?
Tente dar esses como entrada para o xargs após “*.txt” e veja o que acontece. Bem, você deve receber um erro semelhante ao seguinte:
Isso acontece porque o xargs passa “.txt” e “.log” como entrada de nome de arquivo para o comando find e então o find falha ao executar com dois nomes de arquivo na entrada. Você pode pensar no comando find sendo executado da seguinte forma:
find -name "*.txt" "*.log"E isso não é o jeito correto.
O que queremos é que o comando xargs primeiro passe “.txt” para o comando find, para que o find nos dê resultados relacionados a arquivos .txt, e então “.log” seja passado. Isso pode ser feito usando a opção de linha de comando -L que o xargs fornece.
A opção de linha de comando -L requer um número que trata como o número máximo de linhas não em branco que devem ser passadas como entrada para o comando de uma só vez. Portanto, no nosso caso, esse valor será 1, já que queremos que uma linha de entrada seja passada como entrada para o find de cada vez.
Então, aqui está o comando que devemos executar:
xargs -L 1 find -nameA captura de tela a seguir mostra o comando mencionado em ação:

Até agora, tudo bem. Mas e se você passar a entrada da seguinte forma:
"*.txt" "*.log"Bem, o comando falhará porque ‘-L 1’ garantirá que a linha completa seja passada para o comando find.
Em situações como essas, você pode usar a opção de linha de comando ‘-n’.
A opção de linha de comando ‘-n’, assim como ‘-L’, requer um número que representará o número de argumentos que você deseja que o xargs passe por linha de comando. No caso que acabamos de discutir, “.txt” e “.log” devem ser argumentos diferentes, e como queremos que sejam passados individualmente, teremos que fornecer ‘1’ como valor para ‘-n’.
xargs -n 1 find -name
Então, essas são as maneiras pelas quais podemos fazer o xargs executar um comando várias vezes.
4. Como fazer o xargs lidar com nomes de arquivos com espaços
Se você se lembra, no início, mencionamos que o xargs trata espaços em branco (bem como caracteres de nova linha) como delimitadores. Isso pode causar problemas em casos em que os nomes de arquivos sendo passados como entrada para o xargs contêm espaços.
Por exemplo, suponha que o diretório atual contenha um arquivo chamado ‘new music.mp3’, e você queira que o xargs passe esse nome para o mplayer para que este possa tocar o arquivo. Se você seguir o caminho convencional, receberá um erro:

Isso acontece porque, devido ao espaço entre ‘new’ e ‘music.mp3’, esses são tratados como dois arquivos diferentes pelo mplayer. Uma maneira de resolver esse problema é usar a barra invertida ao fornecer a entrada:
new\ music.mp3A outra maneira é mudar o delimitador, o que você pode fazer usando a opção -d. Por exemplo, você pode pedir ao xargs para considerar apenas a nova linha como um delimitador, algo que pode ser feito da seguinte forma:
xargs -d '\n' mplayer
5. Como fazer o xargs lidar com nomes de arquivos com caracteres de nova linha
Então, agora sabemos como podemos fazer o xargs lidar com nomes de arquivos que contêm espaços em branco. Mas e quanto a novas linhas? Sim, os nomes de arquivos também podem ter caracteres de nova linha. Por exemplo, há um arquivo chamado ‘foo’[nova linha]’file.txt’. No terminal, o nome é exibido como ‘foo?file.txt’.
Agora, suponha que eu queira que o comando find encontre todos os arquivos com nomes começando com o texto ‘foo’, e então use o xargs para abrir esses arquivos no gedit. Aqui está o comando:
find . -name "foo*" | xargs geditInfelizmente, o comando falha em alcançar seu propósito, pois um novo arquivo com o nome ‘foo’ é aberto no Gedit. Isso provavelmente acontece porque o caractere de nova linha é tratado como um delimitador pelo xargs.
Para resolver esse problema, use a opção -print0 que o find oferece e combine-a com a opção -0 do xargs. Aqui está como a página de manual do find explica essa opção:
-print0
Verdadeiro; imprime o nome completo do arquivo na saída padrão, seguido por um caractere nulo (em vez do caractere de nova linha que -print usa). Isso permite que nomes de arquivos que contêm novas linhas ou outros tipos de espaços em branco sejam corretamente interpretados por programas que processam a saída do find. Esta opção corresponde à opção -0 do xargs.Então, aqui está o comando que devemos usar:
find . -name "foo*" -print0 | xargs -0 gedit6. Como encontrar arquivos que contêm um texto específico
O comando xargs é muito útil se você deseja pesquisar arquivos que contêm um texto/string específico. Por exemplo, se você deseja encontrar arquivos .txt que contenham o texto ‘abc’, isso pode ser feito da seguinte forma:
find -name "*.txt" | xargs grep "abc"Aqui está o comando em ação:
Como é bastante óbvio, neste caso, o comando xargs obtém sua entrada do comando find.
7. Como fazer o xargs aceitar entrada de um arquivo
Até agora, vimos o xargs aceitando entrada do stdin (que é o comportamento padrão) e também de outro comando (discutido na última seção). No entanto, se você quiser, também pode fazer o xargs aceitar entrada de um arquivo.
A opção -a do comando permite que você faça isso. Esta opção espera um nome de arquivo - este seria o arquivo do qual o xargs lerá a entrada.
Por exemplo, suponha que haja um arquivo com o nome ‘input.txt’. Ele contém a entrada para o xargs (basicamente, o conteúdo são dois nomes de arquivos: testfile1.txt e testfile2.txt). Aqui está como o xargs pode ser usado para ler a entrada deste arquivo e passá-la para outro comando, digamos ls.
xargs -a input.txt ls -lartAqui está o comando em ação:
8. Como fazer o xargs solicitar permissão do usuário antes de executar um comando
Já discutimos como você pode fazer o xargs executar um comando várias vezes (veja o ponto 3 acima). Mas e se você quiser que o xargs pergunte sua permissão toda vez que executar o comando? Isso é possível? Sim, é - a opção de linha de comando -p torna isso possível.
Aqui está um exemplo de como você pode executar o xargs em um modo interativo:
Apenas arranhamos a superfície aqui, pois há muitos outros recursos que o comando xargs fornece na forma de opções de linha de comando. Tente os conceitos/recursos do xargs que explicamos neste tutorial e, em caso de qualquer dúvida ou consulta, consulte sua página de manual.
Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.