FIND, Localizando qualquer coisa no Linux

Você já precisou encontrar algum arquivo ou diretório em uma distribuição Linux e não soube por onde começar? Neste artigo apresentaremos algumas das principais funcionalidades do comando FIND.

Ao acessar um servidor Linux e for necessário localizar um arquivo ou diretório criado anteriormente, muitos usuários têm dificuldades em como fazer para localizar aquilo que precisam através do SSH.

Para resolver este problema e ajudar às pessoas a localizarem algo importante que não se recordam aonde esteja salvo dentro do computador, neste artigo tentarei apresentar algumas das funcionalidades do comando FIND.

Leia mais:

NextCloud – A nuvem gratuita baseada no Linux!
Permissões no Linux – Entendendo o chmod
Proxmox VE – O Sistema de Virtualização Robusto e OpenSource!
19 Comandos Cruciais Do Linux A Saber
5 práticas para manter seguro o SSH do Linux
Integrando CentOS ao Active Directory
Como instalar o FileZilla no Linux manualmente

O comando FIND pode ser utilizado com diversos parâmetros nas pesquisas realizadas, como por exemplo:

  • Nome
  • Data
  • Horário de modificação
  • Horário de criação
  • Tamanho do arquivo ou diretório
  • Usuários e permissões

Na maioria das distribuições Linux este comando vem instalado por padrão e não é necessário realizar a instalação de nenhum pacote adicional para utilizá-lo.

A sintaxe mais comum ao utilizar-se o comando find é:

find <diretório de origem> <opções> <termo de busca>

Onde:

find – > comando de busca

<diretório de origem> -> diretório onde a pesquisa será iniciada

<opções> -> opções que serão aplicadas na consulta

<termo de busca> nome do arquivo ou diretório a ser encontrado

Para realizar uma busca por todas as pastas e diretórios do sistema, o caminho de origem deve ser definido como /.

Para efetuar buscas simples de um arquivo pelo nome, a sintaxe do comando é:

Onde:

find -> comando de busca;

. -> diretório atual onde o usuário está logado e navegando;

-name -> parâmetro do comando FIND para encontrar um arquivo pelo nome;

arquivo.txt –> nome do arquivo a ser encontrado;

Para encontrar um arquivo com o nome arquivo.txt ignorando se o nome do arquivo contém letras maiúsculas e minúsculas, deve-se utilizar:

Onde:

find -> comando de busca;

. > diretório onde será efetuada a busca (pasta atual);

-iname -> parâmetros do comando FIND onde ignora-se letras maiúsculas ou minúsculas no nome do arquivo a ser encontrado;

arquivo.txt -> nome do arquivo a ser localizado;

#DicaProfissa: Faça um curso profissionalizante!
Garanta um curso certificado na área de TI e Software pela plataforma de estudos online Udemy.
Clique aqui e confira todos os cursos mais recentes em tecnologia!

Para realizar a busca de um arquivo ou diretório que contenha uma parte do nome:

Onde:

find -> comando de busca;

.-> diretório onde será efetuada a busca(diretório atual);

-name -> parâmetro do comando FIND para encontrar um arquivo pelo nome;

*rquivo* -> sequência de caracteres que devem estar presentes no nome dos arquivos a serem localizados;

Para buscar um arquivo pelo tipo, ou seja, pelo formato de sua extensão, pode-se utilizar a seguinte sintaxe:

$ find . -iname ‘*.txt’

Onde:

find -> comando de busca;

. -> ponto de origem das buscas (neste exemplo, estamos utilizando a pasta local onde o usuário está logado no momento, mas poderia ser definido qualquer outro diretório do sistema ou o sistema por completo, utilizando uma / no lugar do .);

-iname -> A opção ‘-iname’ executa uma pesquisa sem distinção entre maiúsculas e minúsculas, enquanto o caractere curinga ‘*’ corresponde a qualquer caractere, ou número de caracteres, ou zero caracteres no nome do arquivo.

“*.txt” -> formato da extensão de todos os arquivos á serem encontrados;

Para buscar um arquivo pelo tipo de permissão que o mesmo possui, utiliza-se a sintaxe abaixo:

Exemplo: Buscar arquivos com a permissão 777:

 $find . -type f -perm 0777 -print

Onde:

$ find -> comando de busca;

. -> ponto de origem das buscas (neste exemplo, estamos utilizando a pasta local onde o usuário está logado no momento, mas poderia ser definido qualquer outro diretório do sistema ou o sistema por completo, utilizando uma / no lugar do .);

-type -> parâmetro do comando find para especificar arquivos pelo tipo da extensão;

f -> formato do arquivo á ser encontrado;

-perm -> parâmetro do comando FIND para definir o número das permissões do arquivo a ser encontrado;

0777 -> permissões de arquivos linux á serem localizados;

-print -> imprime na tela dos arquivos ou diretórios cujo estejam com permissão 0777;

Este tipo de busca é muito utilizada em servidores Linux, para verificar se os usuários estão deixando arquivos com esse tipo de permissão, que é vulnerável, neste tipo de máquina. Para entender mais sobre os riscos de se utilizar as permissões em aquivos ou diretórios Linux do tipo 0777, irei descrever mais um artigo em breve aqui no fórum. Mas isto em um próximo momento, pois não é o foco deste artigo.

Para realizar a busca por arquivos e diretórios vazios:

$ find . -empty

Onde:

find -> comando de busca;

. ->ponto de origem das buscas (neste exemplo, estamos utilizando a pasta local onde o usuário está logado no momento, mas poderia ser definido qualquer outro diretório do sistema ou o sistema por completo, utilizando uma / no lugar do .);

-empty -> parâmetro do comando FIND que serve para encontrar diretórios vazios;

#DicaProfissa: Faça um curso profissionalizante!
Garanta um curso certificado na área de TI e Software pela plataforma de estudos online Udemy.
Clique aqui e confira todos os cursos mais recentes em tecnologia!

Extra:

Há a possibilidade de se realizar a busca  apenas por diretórios vazios, utilizando o comando:

$ find . -type d -empty

Para procurar apenas por arquivos vazios, utiliza-se o comando:

$ find . -type f -empty

Para realizar a busca por pastas ocultas:

$ find /joaopaulo/home/ -type d -name “.*”

Onde:

find -> comando de busca;

/home/joaopaulo/ -> diretório de busca;

-type -> parâmetro do comando find para especificar arquivos pelo tipo da extensão;

-d -> parâmetro do comando find para referir-se á diretórios;

-name -> parâmetro do comando FIND para encontrar um arquivo pelo nome;

“.*” -> nome dos arquivos começam com .;

Nota: Os diretórios ocultos do sistema Linux tem seus nomes iniciados por um . antes do nome do diretório. Para se deixar um diretório oculto, é preciso renomear o mesmo e adicionar um . antes do nome do diretório.

Para buscar arquivos com tamanho superior á 50MB no diretório atual:

$ find . -type f -size +50M

Onde:

find -> comando de busca;

. -> diretório de busca (diretório atual onde o usuário está navegando);

-type -> parâmetro do comando find para especificar arquivos pelo tipo do arquivo;

f -> parâmetro do comando FIND que indica apenas a busca por arquivos regulares;

-size -> parâmetro do comando FIND que permite localizar um arquivo pelo tamanho;

+50M -> indicação do tamanho dos arquivos á serem localizados no diretório (maiores que 50M);

Extra:

Outro exemplo bastante útil é o uso combinado dos argumentos para encontrar um arquivo pelo tipo da extensão e pelo tamanho, como por exemplo:

$ find . -iname ‘*.txt’ -size -1M

O comando acima realiza uma busca dentro do diretório atual em que o usuário está logado por arquivos cujo a extensão sejam “.txt” e tenham seu tamanho menor que 1 MB.

Para buscar por uma informação dentro do conteúdo arquivo:

$ find ./Fotos/ -name “*.*” -exec grep -Hin “artigo” {} \;

Onde:

find -> comando de busca;

./Fotos -> diretório de busca;

-name -> parâmetro do comando FIND para encontrar um arquivo pelo nome;

“*.*” -> parâmetro que indica realizar a busca em todos os arquivos do diretório;

-exec grep -Hin “artigo” {} ; -> parâmetro que busca o texto “artigo” dentro de todos os arquivos do diretório;

Nota: Na saída do comando é apresentado os números 1, 4 e 6 no final do nome do arquivo. Estes números significam em quais linhas do arquivo o termo “artigo” utilizado na busca está localizado dentro do arquivo. Para demonstrar melhor este exemplo, estou inserindo abaixo o conteúdo do arquivo “arquivo.txt”:

Observação: As linhas em branco que deixei ao escrever o conteúdo do arquivo.txt também são contabilizadas como linhas, por isso a palavra “artigo” está presente nas linhas 1, 4 e 6.

#DicaProfissa: Faça um curso profissionalizante!
Garanta um curso certificado na área de TI e Software pela plataforma de estudos online Udemy.
Clique aqui e confira todos os cursos mais recentes em tecnologia!

Para buscar arquivos por marcas do tempo ou arquivos acessados nas últimas 24 horas, podemos destacar:

$ find ./Fotos -type f -atime -1 -exec ls -l {} \;

A saída deste comando mostra todos os usuários que realizaram alterações no diretório /Fotos ou nos arquivos contidos dentro do diretório /Fotos, juntamente com a data e hora da modificação.

Arquivos acessados nos últimos 15 minutos:

$ $ find ./Fotos -type f -atime -15

A saída deste comando representa de maneira simplificada apenas o nome do arquivo que foi modificado.

Para obter-se maiores detalhes tais como usuário que editou, data e hora da modificação, utiliza-se o comando com a sintaxe:

$ find ./Fotos -type f -atime -15 -exec ls -l {} \;

criados nas últimas 12 horas:

$ find ./Fotos/ -type f -ctime -0,5 -exec ls -l {} \;

A saída deste comando lista todos os arquivos que foram criados nas últimas 12 horas no diretório /Fotos detalhadamente (usuário, data, hora, nome do arquivo).

Procurar arquivos modificados nas últimas 6 horas (mtime):

$ find ./Fotos/ -type f -ctime -0,25 -exec ls -l {} \;

Para obter esta informação de maneira simplificada, exibindo apenas o nome dos arquivos que foram alterados, o comando pode ser resumido em:

Ainda existem inúmeras possibilidades de se compor o comando FIND. Para obter maiores detalhes e descobrir sobre todos os argumentos e sintaxes que podem ser utilizadas pelo comando FIND, pode-se consultar o manual do FIND digitando no SSH o comando:

$ man find

Considerações:

Este artigo foi escrito e produzido com imagens baseadas na distribuição Ubuntu Linux versão 20.04.01 LTS.

A sintaxe do comando FIND pode sofrer pequenas modificações entre uma distribuição e outra, por isso, recomenda-se a leitura do manual da ferramenta dentro de cada distribuição utilizando o manual disponível no SSH, cujo a fonte é do repositório oficial da versão.

Referências e Créditos deste artigo:

Referência: $ man find, DuckDuckGo, GuiaLinux, Help Ubuntu

Este artigo foi útil?

Para manter um padrão de qualidade para vocês, investimos em um ótimo plano de hospedagem, CDN Pago, Plugins de Otimização para o Site, etc…

Ajude-nos a manter o projeto ativo! 

Acompanhe as novidades em tempo real. Siga nosso perfil no Instagram..

João Paulo Scopel
João Paulo Scopel é graduado em Sistemas de Informação e profissional de Tecnologia da Informação há 10 anos. Atua como Analista de Tecnologia e Infraestrutura com ênfase em soluções Linux, é Consultor de Soluções Open-Source para empresas e é Colunista do Dicas de Infra.
pt_BRPortuguese

ATÉ 90% DE DESCONTO

DECOLE SUA CARREIRA!!

Quer dar um upgrade na sua carreira? 

Invista em você e saia na frente! Conquiste aquele emprego dos sonhos em 2022!