As vezes gostaríamos de buscar um arquivo e/ou diretório e não lembramos onde ele está, mas sabemos o nome ou parte do nome dele.
O linux possui um recurso conhecido como curinga ou referência global; é através dele que poderemos fazer as nossas buscas. Por exemplo:
$ ls /home/*.py
O comando ls vai listar o conteúdo do diretório indicado e retornará apenas os arquivos com a extensão .py, independente do nome do arquivo.
Se quisermos listar os arquivos que contenham uma determinada letra ou conjunto de letras no meio. Exemplo:
$ ls /home/*re*
Se o diretório tiver a(s) letra(s) referenciadas, ele retornará também o conteúdo contido nele.
Para listar os arquivos que comecem com uma determinada letra, usamos, por exemplo
$ ls /home/s*
Aqui serão listados os arquivos e pastas que comecem com a letra s.
Se eu quiser arquivo e/ou diretórios que comecem com a ou p:
$ ls /home/[a,p]*
É importante notar que o sistema Linux faz distinção entre caracteres maiúsculos e minúsculos.
Caso queira arquivos que terminem com uma determinada letra
$ ls /home/*f
Aqui o retorno será arquivos e/ou diretórios que terminam com a letra f. É importante notar que isso inclui também as letras da extensão do arquivo.
Para buscar arquivos que terminem com uma sequência de caracteres; exemplo:
$ ls /home/*{pdf,png}
Outra possibilidade é se quisermos buscar um arquivo que possua um ou mais caracteres em determinada posição. Exemplo:
$ ls /home/??a*
O comando acima pede que retorne arquivos ou pastas com a letra a na terceira posição (os dois pontos de interrogação) independente da terminação do nome do arquivo (asterisco ao final).
Para buscar arquivos dentro de uma faixa de caracteres. Exemplo:
$ ls /home/a[i-o]*
Aqui temos o retorno dos arquivos que começam com a seguidos das letras i ou j ou k e assim por diante até a letra o (o traço indica o intervalo), com quaisquer terminações (asterisco).
Outra maneira é
$ ls /home/a[n,o]*
Nesse caso, a vírgula indica para retornar com a segunda letra sendo n ou o.
Ou ainda,
$ ls /home/*[x-z]*
O retorno será todos os arquivos que possuem da letra x até a letra z em quaisquer posições.
Caso queira que seu arquivo ou diretório tenha como segundo caractere uma vogal:
$ ls /home/?[a,e,i,o,u]*
Lembrando que, se o diretório tiver a(s) letra(s) referenciadas, ele retornará também o conteúdo contido nele; como aconteceu com a pasta revisao.
Essa faixa também pode ser de números. Exemplo:
$ ls /home/?[0-9]*
Acima teremos o retorno de arquivos em que o segundo caractere é um número variando de 0 a 9, seguido de qualquer terminação.
Se quiser que o segundo caractere seja a letra s numa palavra de cinco letras:
$ ls /home/?s???
Uma palavra de seis caracteres, em que o segundo seja uma vogal seguida de s.
$ ls /home/?[a,e,i,o,u]s???
Se a minha busca é de duas extensões de arquivos ao mesmo tempo, temos:
$ ls /home/*.{conf,db}
Nesse caso, eu quero arquivos com qualquer nome, mas que tenham as extensões .conf e .db.
É possível fazer várias combinações entre esse recurso para atender ao que você deseja.
Lembre-se que letras maiúsculas e minúsculas são caracteres diferentes aqui (case-sensitive).
tags: linux, busca, curinga, referencia global