Aula 7.8 - Entenda o processo de expansão de arquivos no Linux
Este artigo faz parte do projeto #LTCode
Globbing é o nome dado ao processo de expansão de caminho de arquivos. Para isso você pode utilizar de caracteres coringa que quando aparecem em um argumento em linha de comando, a shell o expande em uma lista de nomes de arquivos.
O caractere coringa "?" (ponto de interrogação) casa qualquer caractere único no nome de arquivos existente.
Portanto pode-se utilizar o caractere coringa "?" em qualquer posição no nome do arquivo, inicio, meio ou fim.
Outro caractere coringa é "*" (asterisco).
O asterisco casa qualquer quantidade de caracteres inclusive nenhum.
Uma informação importante é que o caractere coringa interrogação e asterisco não casam arquivos escondidos.
Então para exibir arquivos escondidos é necessário colocar explicitamente o caractere ponto antes do padrão.
Um par de colchetes "[]" envolvendo uma lista de caracteres faz com que a shell case nomes de arquivos contendo um dos caracteres individualmente.
Cada caractere no colchete é substituído um por vez durante a expansão do argumento. Utilizar um hífen "-" dentro dos colchetes define uma faixa de caracteres a serem utilizados na expansão. Então utilizar [1-4] é o mesmo que utilizar [1234] e [a-zA-Z] utiliza todas as letras minúsculas e maiúsculas sem acentos.
Quando um caractere de circunflexo (^) ou de interrogação (!) é imediatamente seguido do colchete de abertura, significa que não casa com os caracteres especificados dentro dos colchetes.
No exemplo da figura acima casa qualquer nome de arquivo que não termina em com número 2.
Confira abaixo alguns caracteres coringa pré-definidos para utilização:
[:alnum:] representam caracteres alfanuméricos como letras e dígitos.
[:alpha:] representam caracteres do alfabeto como letra.
[:blank:] representam caracteres branco como espaço em branco e tabulação.
[:cntrl:] representam caracteres de controle (CONTROL)
[:digit:] representam caracteres numéricos como dígitos.
[:graph:] representam caracteres gráficos: [:alnum:] e [:punct:].
[:lower:] representam caracteres minúsculos do alfabeto: [a-z].
[:print:] representam caracteres imprimíveis: [:alnum:], [:punct:] e [:space:].
[:space:] representam espaço, tabulação, nova linha, form feed, carriage return.
[:upper:] representam caracteres maiúsculo do alfabeto: [A-Z].
[:xdigit:] representam dígitos hexadecimais: [0-9], [a-f] e [A-F].
Alguns exemplos de uso de expansões:
* casa todos os arquivos.
g* casa qualquer arquivo começando com g.
b*.txt casa qualquer arquivo começando com b, seguido de quaisquer caracteres e terminando em .txt .
Data??? casa qualquer arquivo começando com Data seguido de exatamento três caracteres quaisquer.
[abc]* casa qualquer arquivo começando com a, b ou c.
BACKUP[0-9][0-9][0-9] casa qualquer arquivo começando com BACKUP seguido de exatamente três caracteres numerais.
[[:upper:]]* casa qualquer arquivo começando com um caractere maiúsculo.
[![:digit:]]* casa qualquer arquivo não começando com um número.
*[[:lower:]123] casa qualquer arquivo terminando com um caractere minúsculo ou um dos numerais de 1 a 3.
Próxima aula, clique aqui.
COMENTÁRIOS