Formas de Usar o Comando ‘find’ para Pesquisar Diretórios de Maneira Mais Eficiente

Este tutorial irá guiá-lo pelas diferentes maneiras de encontrar um diretório no Linux. Como você já deve saber, no Linux tudo é um arquivo, incluindo diretórios. E uma das coisas comuns que um usuário do Linux fará na linha de comando é procurar por um arquivo ou diretório.

Existem vários meios e utilitários usados para procurar arquivos na linha de comando, como find, locate e which. No entanto, o último utilitário (which) é usado apenas para localizar um comando.

Para o escopo deste tutorial, vamos focar principalmente no utilitário find, que busca arquivos em um sistema de arquivos Linux em tempo real e é mais eficiente e confiável em comparação com locate.

A desvantagem do locate é que ele lê um ou mais bancos de dados criados por updatedb, não busca em um sistema de arquivos em tempo real. Além disso, ele não oferece flexibilidade quanto a onde procurar (ponto de partida).

Abaixo está a sintaxe para executar o comando locate:

# locate [option] [search-pattern]

Para demonstrar a desvantagem de localizar, vamos supor que estamos procurando por um diretório chamado pkg no diretório de trabalho atual.

Observação: No comando abaixo, a opção --basename ou -b informa ao localizar para combinar apenas o nome do arquivo (diretório) (que é exatamente pkg) mas não o caminho (/caminho/para/pkg). Onde \ é um caractere de globulação, ele desativa a substituição implícita de pkg por *pkg*.

$ locate --basename '\pkg'
Find Directory Using locate Command

Como você pode ver na saída do comando acima, localizar irá pesquisar a partir do diretório raiz (/), por isso outros diretórios com o mesmo nome são encontrados.

Portanto, para lidar com esse problema, use encontrar seguindo a sintaxe simplificada abaixo:

$ find starting-point options [expression]

Vamos ver alguns exemplos.

Para procurar pelo mesmo diretório (pkg) acima, dentro do diretório de trabalho atual, execute o seguinte comando, onde a bandeira -name lê a expressão que neste caso é o nome do diretório.

$ find . -name "pkg"

Se você encontrar erros de “Permissão negada”, use o comando sudo assim:

$ sudo find . -name "pkg"
Search a Directory Using find Command

Você pode impedir que o find procure por outros tipos de arquivos exceto diretórios usando a bandeira -type para especificar o tipo de arquivo (no comando abaixo d significa diretório) da seguinte forma:

$ sudo find . -type d -name "pkg"

Além disso, se desejar listar o diretório em um formato de listagem longa, utilize o switch de ação -ls:

$ sudo find . -type d -name "pkg" -ls
Find and List Directory

Em seguida, a opção -iname permitirá uma busca insensível a maiúsculas e minúsculas:

$ sudo find . -type d -iname "pkg" 
$ sudo find . -type d -iname "PKG" 
Find Directory with Case Sensitive

Para encontrar informações de uso mais interessantes e avançadas, leia as páginas do manual de find e locate.

$ man find
$ man locate

Como última observação, o comando find é mais confiável e eficiente para buscar arquivos (ou diretórios) em um sistema Linux quando comparado com o comando locate.

Da mesma forma que antes, não se esqueça de nos enviar seu feedback ou perguntas através da seção de comentários abaixo. Por fim, mantenha-se sempre conectado ao Tecmint.

Source:
https://www.tecmint.com/find-directory-in-linux/