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

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

Existem vários meios e utilitários usados para pesquisar 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, focaremos principalmente no utilitário find, que pesquisa 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 pesquisa em um sistema de arquivos em tempo real. Além disso, ele também não oferece flexibilidade em relação a onde pesquisar (ponto de partida).

A seguir 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.

Nota: No comando abaixo, a opção --basename ou -b diz ao localizar para apenas corresponder ao nome do arquivo (diretório) (que é exatamente pkg) e não ao caminho (/caminho/para/pkg). Onde \ é um caractere de globo, 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á procurar a partir do diretório raiz (/), é por isso que outros diretórios com o mesmo nome são correspondidos.

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 flag -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 o find de pesquisar por outros tipos de arquivos exceto diretórios usando a flag -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 deseja listar o diretório em um formato de listagem longa, utilize o comando -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 mais informações de uso interessantes e avançadas, leia as páginas de manual do find e do locate.

$ man find
$ man locate

Como última observação, o comando find é mais confiável e eficiente para pesquisar 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/