Administradores de sistemas e usuários finais costumam precisar encontrar informações, como arquivos e diretórios em suas máquinas ou servidores. Um dos comandos mais utilizados no
Linux para essa tarefa é o
find, que pode ser utilizado com diversas opções nas pesquisas realizadas.
Dentre as funcionalidades desse comando, podemos destacar: tamanho; data; horário de modificação; permissões; usuários; dentre diversas outras. Outro ponto interessante, é que esse comando está instalado por padrão na grande maioria das distribuições Linux.
O layout mais comum desse comando é:
find <startingdirectory> <opções> <termo de busca>
Inicia-se com o comando find, depois o argumento <startingdirectory>, que é o ponto de origem onde iremos iniciar a pesquisa. Quando o usuário desejar buscar o sistema todo, irá utilizar a raiz do sistema, o / neste argumento.
O segundo argumento utilizado é o filtro para procurar os arquivos (informações). Pode-se utilizar o nome de um arquivo, tipo, data de criação ou modificação, dentre outras opções. Já o terceiro argumento é um acompanhamento do segundo, onde especifica-se o termo de busca relevante.
Irei agora apresentar algumas opções de utilização esse comando.
Busca simples pelo nome de um arquivo:
find . -name arquivo.txt
./arquivo.txt
Neste exemplo, buscou-se na pasta atual (.), um arquivo como o nome arquivo.txt (-name arquivo.txt). O retorno foi de 1 arquivo com esse nome.
Busca ignorando case sensitive:
find /home/ -iname arquivo.txt
./arquivo.txt
./Arquivo.txt
Agora, buscou-se no diretório /home qualquer arquivo com o nome arquivo.txt, com letras maiúsculas ou minúsculas. Como retorno obteve-se 2 arquivos.
Busca com coringas:
find /home/ -name *rquivo*
./home/arquivo.txt
./home/Arquivo.txt
./home/Meus_Arquivo-NOVOS.txt
./home/arquivo.sh
Busca realizada no diretório /home, para qualquer arquivo que possua "rquivo". Como retorno obteve-se 4 arquivos.
Busca por diretórios:
find / -type -d -name Fotos arquivo.txt
/home/user/Fotos
Na busca por diretórios, utilizou-se "-type -d", obtendo 1 resultado no retorno.
Buscar por um tipo de arquivo:
find / -type f -name "*.odt"
./cursos.odt
./artigos.odt
Utilizou-se a opção -name para buscar arquivos com a extensão odt.
Buscar arquivos com a permissão 777:
find . -type f -perm 0777 -print
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.
Buscar arquivos e diretórios vazios:
find ArquivosCompartilhados/ -empty
ArquivosCompartilhados /DirVazio
ArquivosCompartilhados /arquivoVazio.txt
Buscar pastas ocultas:
find /tmp -type d -name ".*"
Buscar arquivos maiores que 50MB no diretório atual:
find . -type f -size +50M
Buscar e remover um arquivo:
find . -type f -name arquivoVazio.txt -exec rm -f {} ;
Neste exemplo, busca-se o arquivoVazio.txt, e caso ele seja encontrado, será removido do sistema.
Buscar por uma informações dentro do arquivo:
find ArquivosCompartilhados/ -name "*.*" -exec grep -Hin "drSolutions" {} ;
ArquivosCompartilhados/fornecedores.txt:1:drSolutions
Buscamos arquivos com o texto "drSolutions" dentro deles.
Buscar arquivos acessados nas últimas 24 horas:
find . -type f -atime -1 -exec ls -l {} ;
Buscar arquivos acessados nos últimos 5 minutos:
find . -type f -amin -5
Buscar arquivos criados nas últimas 12 horas:
find . -type f -ctime -0.5 -exec ls -l {} ;
Buscar arquivos executáveis:
find / -perm /a=x
Buscar arquivos disponíveis apenas para leitura:
find / -perm /u=r
Caso você queira conhecer melhor o comando find, utilize o manual da seguinte forma:
man find
E você, como utiliza o comando find?