Como encontrar um ficheiro pelo nome no Linux a partir do terminal
Com find e locate, e quando usar cada um.
find / -iname "*relatorio*" 2>/dev/null
-iname procura sem distinguir maiúsculas de minúsculas
(mais flexível do que -name). O 2>/dev/null
oculta os avisos de "permissão negada" em pastas do sistema às quais
não tem acesso, deixando só os resultados úteis.
Mais rápido para uso diário: locate
sudo apt install mlocate
sudo updatedb
locate relatorio
locate é muito mais rápido do que find
porque consulta um índice já construído, em vez de percorrer o disco
no momento — mas por isso mesmo não encontra ficheiros criados depois
da última vez que esse índice foi atualizado (com
updatedb, que se executa automaticamente todos os dias).
Dica: use find se precisar de
resultados garantidos no instante (incluindo ficheiros criados há um
minuto); use locate para pesquisas rápidas do dia a dia
onde não importa que o índice tenha algumas horas.
Perguntas frequentes
Porque é que o locate não encontra um ficheiro que acabei de criar?
Porque o locate consulta um índice que se atualiza periodicamente (normalmente uma vez por dia), não em tempo real. Execute 'sudo updatedb' manualmente para forçar uma atualização imediata.
Porque é que o find mostra tantos erros de 'permissão negada'?
Porque tenta procurar em pastas do sistema às quais o seu utilizador não tem acesso. Acrescentar '2>/dev/null' no final do comando oculta esses avisos, deixando só os resultados úteis.