Pesquisa de site

10 exemplos práticos de uso de curingas para combinar nomes de arquivos no Linux


Caracteres curinga (também chamados de metacaracteres) são símbolos ou caracteres especiais que representam outros caracteres. Você pode usá-los com qualquer comando, como comando ls ou comando rm para listar ou remover arquivos que correspondam a um determinado critério, de forma receptiva.

Leia também: 10 exemplos práticos úteis sobre operadores de encadeamento no Linux

Esses curingas são interpretados pelo shell e os resultados são retornados ao comando executado. Existem três curingas principais no Linux:

  • Um asterisco (*) – corresponde a uma ou mais ocorrências de qualquer caractere, incluindo nenhum caractere.
  • Ponto de interrogação (?) – representa ou corresponde a uma única ocorrência de qualquer caractere.
  • Caracteres entre colchetes ([ ]) – corresponde a qualquer ocorrência de caractere entre colchetes. É possível utilizar diferentes tipos de caracteres (caracteres alfanuméricos): números, letras, outros caracteres especiais etc.

Você precisa escolher cuidadosamente qual curinga usar para corresponder aos nomes de arquivos corretos: também é possível combinar todos eles em uma operação, conforme explicado nos exemplos abaixo.

Como combinar nomes de arquivos usando curingas no Linux

Para os fins deste artigo, usaremos os arquivos a seguir para demonstrar cada exemplo.

createbackup.sh  list.sh  lspace.sh        speaker.sh
listopen.sh      lost.sh  rename-files.sh  topprocs.sh

1. Este comando corresponde a todos os arquivos com nomes começando com l (que é o prefixo) e terminando com uma ou mais ocorrências de qualquer caractere.

ls -l l*	

2. Este exemplo mostra outro uso de * para copiar todos os nomes de arquivos prefixados com users-0 e terminando com uma ou mais ocorrências de qualquer caractere.

mkdir -p users-info
ls users-0*
mv -v users-0* users-info/	# Option -v flag enables verbose output

3. O comando a seguir corresponde a todos os arquivos com nomes começando com l seguido por qualquer caractere único e terminando com st.sh (que é o sufixo ).

ls l?st.sh	

4. O comando abaixo corresponde a todos os arquivos com nomes começando com l seguido por qualquer um dos caracteres entre colchetes, mas terminando com st.sh .

ls l[abdcio]st.sh 

Como combinar curingas para corresponder aos nomes de arquivos no Linux

Você pode combinar curingas para criar critérios complexos de correspondência de nome de arquivo, conforme descrito nos exemplos a seguir.

5. Este comando corresponderá a todos os nomes de arquivos prefixados com quaisquer dois caracteres seguidos por st, mas terminando com uma ou mais ocorrências de qualquer caractere.

ls
ls ??st*

6. Este exemplo corresponde a nomes de arquivos que começam com qualquer um destes caracteres [clst] e terminam com uma ou mais ocorrências de qualquer caractere.

ls
ls [clst]*

7. Nestes exemplos, apenas nomes de arquivos começando com qualquer um destes caracteres [clst] seguido por um destes [io] e, em seguida, qualquer um destes caracteres caractere, seguido por um t e por último, uma ou mais ocorrências de qualquer caractere serão listadas.

ls
ls [clst][io]?t*

8. Aqui, nomes de arquivos prefixados com uma ou mais ocorrências de qualquer caractere, seguidos pelas letras tar e terminando com uma ou mais ocorrências de qualquer caractere serão removidos.

ls
rm *tar*
ls

Como combinar caracteres definidos no Linux

9. Agora vamos ver como especificar um conjunto de caracteres. Considere os nomes de arquivos abaixo contendo informações dos usuários do sistema.

ls

users-111.list  users-1AA.list  users-22A.list  users-2aB.txt   users-2ba.txt
users-111.txt   users-1AA.txt   users-22A.txt   users-2AB.txt   users-2bA.txt
users-11A.txt   users-1AB.list  users-2aA.txt   users-2ba.list
users-12A.txt   users-1AB.txt   users-2AB.list  users-2bA.list

Este comando corresponderá a todos os arquivos cujo nome comece com users-i, seguido por um número, uma letra minúscula ou número, depois um número e termine com uma ou mais ocorrências de qualquer caractere.

ls users-[0-9][a-z0-9][0-9]*

O próximo comando corresponde aos nomes de arquivos que começam com users-i, seguido por um número, uma letra ou número minúsculo ou maiúsculo, depois um número e termina com uma ou mais ocorrências de qualquer caractere.

ls users-[0-9][a-zA-Z0-9][0-9]*

Este comando a seguir corresponderá a todos os nomes de arquivos que começam com users-i, seguido por um número, uma letra ou número minúsculo ou maiúsculo, depois uma letra minúscula ou maiúscula e termina com uma ou mais ocorrências de qualquer personagem.

ls users-[0-9][a-zA-Z0-9][a-zA-Z]*

Como negar um conjunto de caracteres no Linux

10. Você também pode negar um conjunto de caracteres usando o símbolo !. O comando a seguir lista todos os nomes de arquivos começando com users-i, seguido por um número, qualquer caractere de nome de arquivo válido além de um número, depois uma letra maiúscula ou minúscula e termina com uma ou mais ocorrências de qualquer personagem.

ls users-[0-9][!0-9][a-zA-Z]*

É tudo por agora! Se você experimentou os exemplos acima, agora deve ter um bom entendimento de como os curingas funcionam para corresponder aos nomes de arquivos no Linux.

Você também pode ler estes artigos a seguir que mostram exemplos de uso de curingas no Linux:

  1. Como extrair arquivos Tar para um diretório específico ou diferente no Linux
  2. 3 maneiras de excluir todos os arquivos em um diretório, exceto um ou poucos arquivos com extensões
  3. 10 dicas úteis para escrever scripts Bash eficazes no Linux
  4. Como usar expressões regulares e Awk para filtrar texto ou string em arquivos

Se você tiver algo a compartilhar ou perguntas a fazer, use o formulário de comentários abaixo.