Pesquisa de site

12 exemplos práticos de comando Linux Xargs para iniciantes


Xargs é um ótimo comando que lê fluxos de dados de entrada padrão e, em seguida, gera e executa linhas de comando; o que significa que pode obter a saída de um comando e passá-la como argumento de outro comando. Se nenhum comando for especificado, xargs executa echo por padrão. Você também o instrui a ler dados de um arquivo em vez de stdin.

Existem diversas maneiras pelas quais xargs é útil no uso diário da linha de comando. Neste artigo, explicaremos 12 exemplos práticos de comandos xargs do Linux para iniciantes.

1. O primeiro exemplo mostra como descobrir todas as imagens .png e arquivá-las usando o utilitário tar como segue.

Aqui, o comando de ação -print0 permite a impressão do caminho completo do arquivo na saída padrão, seguido por um caractere nulo e o sinalizador -0 xargs lida efetivamente com o espaço nos nomes de arquivos.

find Pictures/tecmint/ -name "*.png" -type f -print0 | xargs -0 tar -cvzf images.tar.gz

2. Você também pode converter a saída de múltiplas linhas do comando ls em uma única linha usando xargs como segue.

ls -1 Pictures/tecmint/
ls -1 Pictures/tecmint/ | xargs

3. Para gerar uma lista compacta de todas as contas de usuário Linux no sistema, use o seguinte comando.

cut -d: -f1 < /etc/passwd | sort | xargs

4. Supondo que você tenha uma lista de arquivos e queira saber o número de linhas/palavras/caracteres em cada arquivo da lista, você pode usar o comando ls e xargs para esta finalidade da seguinte forma.

ls *upload* | xargs wc

5. Xarags também permite que você encontre e remova recursivamente um diretório, por exemplo, o comando a seguir removerá recursivamente DomTerm no diretório Downloads.

find Downloads -name "DomTerm" -type d -print0 | xargs -0 /bin/rm -v -rf "{}"

6. Da mesma forma que no comando anterior, você também pode encontrar todos os arquivos chamados net_stats no diretório atual e excluí-los.

find . -name "net_stats" -type f -print0 | xargs -0 /bin/rm -v -rf "{}"

7. Em seguida, use xargs para copiar um arquivo para vários diretórios de uma só vez; neste exemplo, estamos tentando copiar o arquivo.

echo ./Templates/ ./Documents/ | xargs -n 1 cp -v ./Downloads/SIC_Template.xlsx 

8. Você também pode usar o comando find, xargs e os comandos renomear juntos para renomear todos os arquivos ou subdiretórios em um diretório específico para letras minúsculas, como segue.

find Documnets -depth | xargs -n 1 rename -v 's/(.*)\/([^\/]*)/$1\/\L$2/' {} \;

9. Aqui está outro exemplo de uso útil para xargs, ele mostra como excluir todos os arquivos dentro de um diretório, exceto um ou poucos arquivos com uma determinada extensão.

find . -type f -not -name '*gz' -print0 | xargs -0 -I {} rm -v {}

10. Como mencionado anteriormente, você pode instruir xargs a ler itens de um arquivo em vez da entrada padrão usando o sinalizador -a conforme mostrado.

xargs -a rss_links.txt

11. Você pode ativar o detalhamento usando o sinalizador -t, que diz ao xargs para imprimir a linha de comando na saída de erro padrão antes de executá-la.

find Downloads -name "DomTerm" -type d -print0 | xargs -0 -t /bin/rm -rf "{}"

12. Por padrão, xargs termina/delimita itens usando espaços em branco, você pode usar o sinalizador -d para definir o delimitador que pode ser um caractere único, um escape de caractere no estilo C, como \n, ou um código de escape octal ou hexadecimal.

Além disso, você também pode perguntar ao usuário se deve executar cada linha de comando e ler uma linha do terminal, usando o sinalizador -p conforme mostrado (simplesmente digite y para sim ou n para não).

echo ./Templates/ ./Documents/ | xargs -p -n 1 cp -v ./Downloads/SIC_Template.xlsx 

Para obter mais informações, leia a página de manual do xargs.

man xargs 

Por enquanto é isso! Xargs é um utilitário poderoso para construir uma linha de comando; pode ajudá-lo a passar a saída de um comando como argumento de outro comando para processamento. Neste artigo, explicamos 12 exemplos práticos de comandos xargs para iniciantes. Compartilhe suas idéias ou perguntas conosco por meio do formulário de feedback abaixo.