Guia do Linux/Avançado/Explicações Básicas/Curingas
Curingas
editarCuringas (ou referência global) é um recurso usado para especificar um ou mais arquivos ou diretórios do sistema de uma só vez. Este é um recurso permite que você faça a filtragem do que será listado, copiado, apagado, etc. São usados 4 tipos de curingas no GNU/Linux
:
- "*" - Faz referência a um nome completo/restante de um arquivo/diretório.
- "?" - Faz referência a uma letra naquela posição.
- [padrão] - Faz referência a uma faixa de caracteres de um arquivo/diretório. Padrão pode ser:
- [a-z][0-9] - Faz referência a caracteres de a até z seguido de um caracter de 0 até 9.
- [a,z][1,0] - Faz a referência aos caracteres a e z seguido de um caracter 1 ou 0 naquela posição.
- [a-z,1,0] - Faz referência a intervalo de caracteres de a até z ou 1 ou 0 naquela posição.
A procura de caracteres é "Case Sensitive" assim se você deseja que sejam localizados todos os caracteres alfabéticos você deve usar [a-zA-Z]. Caso a expressão seja precedida por um ^, faz referência a qualquer caracter exceto o da expressão. Por exemplo [^abc] faz referência a qualquer caracter exceto a, b e c.
- {padrões} - Expande e gera strings para pesquisa de padrões de um arquivo/diretório.
- X{ab,01} - Faz referência a sequencia de caracteres Xab ou X01
- X{a-z,10} Faz referencia a sequencia de caracteres Xa-z e X10.
O que diferencia este método de expansão dos demais é que a existência do arquivo/diretório é opcional para geração do resultado. Isto é útil para a criação de diretórios. Lembrando que os 4 tipos de curingas ("*", "?", "[]", "{}") podem ser usados juntos. Para entender melhor vamos a prática:
Vamos dizer que tenha 5 arquivo no diretório /usr/teste
: teste1.txt, teste2.txt, teste3.txt, teste4.new, teste5.new
.
Caso deseje listar todos os arquivos do diretório /usr/teste
você pode usar o coringa "*" para especificar todos os arquivos do diretório:
cd /usr/teste e ls * ou ls /usr/teste/*.
Não tem muito sentido usar o comando ls
com "*" porque todos os arquivos serão listados se o ls
for usado sem nenhum Coringa.
Agora para listar todos os arquivos teste1.txt, teste2.txt, teste3.txt
com exceção de teste4.new
, teste5.new
, podemos usar inicialmente 3 métodos:
- Usando o comando ls *.txt que pega todos os arquivos que começam com qualquer nome e terminam com
.txt
. - Usando o comando ls teste?.txt, que pega todos os arquivos que começam com o nome
teste
, tenham qualquer caracter no lugar do coringa ? e terminem com.txt
. Com o exemplo acima teste*.txt também faria a mesma coisa, mas se também tivéssemos um arquivo chamadoteste10.txt
este também seria listado. - Usando o comando ls teste[1-3].txt, que pega todos os arquivos que começam com o nome
teste
, tenham qualquer caracter entre o número 1-3 no lugar da 6a letra e terminem com.txt
. Neste caso se obtém uma filtragem mais exata, pois o coringa ? especifica qualquer caracter naquela posição e [] especifica números, letras ou intervalo que será usado.
Agora para listar somente teste4.new
e teste5.new
podemos usar os seguintes métodos:
- ls *.new que lista todos os arquivos que terminam com
.new
- ls teste?.new que lista todos os arquivos que começam com
teste
, contenham qualquer caracter na posição do coringa ? e terminem com.new
. - ls teste[4,5].* que lista todos os arquivos que começam com
teste
contenham números de 4 e 5 naquela posição e terminem com qualquer extensão.
Existem muitas outras formas de se fazer a mesma coisa, isto depende do gosto de cada um. O que pretendi fazer aqui foi mostrar como especificar mais de um arquivo de uma só vez. O uso de curingas será útil ao copiar arquivos, apagar, mover, renomear, e nas mais diversas partes do sistema. Alias esta é uma característica do GNU/Linux
: permitir que a mesma coisa possa ser feita com liberdade de várias maneiras diferentes.