Linux which, whereis, locate: 3 comandos para achar a localização (caminho) de um arquivo

Aviso de afiliados v3.1
Aviso de afiliados v3.2 (somente celular)
Ambiente de testeFamília RHELAlmaLinux 9.8conta rootVerificado em 07/10/2026
Comandos de buscawhichwhereislocate

Às vezes você precisa editar o httpd.conf mas não sabe onde o arquivo está, ou um comando com o mesmo nome existe em dois lugares e não está claro qual roda. O comando which do Linux acha o arquivo que realmente roda, o comando whereis acha o executável mais as pastas de configuração e os manuais, e o comando locate acha todo caminho que contém o nome. Este post compara os três numa tabela e deixa você testá-los num servidor virtual no navegador.

No AlmaLinux 9.8, o which vem no pacote which 2.21 e o whereis no util-linux 2.37.4, então os dois funcionam de cara, enquanto o locate precisa do pacote mlocate 0.26 instalado à parte.

✅ which vs whereis vs locate

Os três comandos procuram em lugares diferentes. which e whereis vasculham pastas fixas na hora, enquanto o locate procura nomes numa lista de arquivos (DB) montada antes.

ComandoO que encontraOnde procuraArquivos novos
whichO único arquivo de comando que roda, mais aliasesPastas listadas no PATHEncontra na hora
whereisExecutável · pastas de configuração · manuaisPastas fixas como /usr/bin · /etc · /usr/share/manEncontra na hora
locateTodo arquivo e pasta que contém o nomeUma DB montada antes (/var/lib/mlocate/mlocate.db)Encontra depois do updatedb

Procure o mesmo httpd com which e whereis e a diferença aparece na hora.

~]# which httpd
/usr/sbin/httpd
~]# whereis httpd
httpd: /usr/sbin/httpd /usr/lib64/httpd /etc/httpd /usr/share/httpd /usr/share/man/man8/httpd.8.gz

O locate mostra todo caminho que bate mesmo com parte do nome, então digitar [locate httpd.conf] traz também o manual (httpd.conf.5.gz) e eventuais cópias de backup, não só o arquivo de configuração.

No servidor virtual abaixo, escolha which, whereis ou locate à esquerda para trocar os chips; clicar num chip digita aquele comando. Você também pode digitar pelo teclado.

Simulador de comandos de localização de arquivosAlmaLinux 9.8
[root@server work]#
Roda só no seu navegador e não mexe num servidor real. Escolha um comando à esquerda para trocar os chips abaixo; clicar num chip digita aquele comando. Procure o mesmo httpd com os três comandos e compare os resultados, e no locate crie um arquivo novo e procure antes e depois do updatedb. Se algo embolar, clique em [Start over]; digite uknew help para ver os comandos disponíveis.

Para achar arquivos por tamanho ou data de modificação em vez de nome, use o comando find; para ver o caminho da pasta em que você está, use o comando pwd.

✅ Comando which do Linux

O which vasculha as pastas do PATH a partir da primeira, uma a uma, e mostra o primeiro executável que encontra. Esse é o arquivo que realmente roda quando você digita o comando.

No AlmaLinux, o bash passa a lista de aliases para o which, então para um comando com alias você recebe o alias e o arquivo real. Se não estiver em lugar nenhum do PATH, aparece [no command in (PATH)].

~]# which ll
alias ll='ls -l --color=auto'
	/usr/bin/ls
~]# which htop
/usr/bin/which: no htop in (/root/.local/bin:/root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin)

Na prática, -a é a única opção. Quando o mesmo nome existe em duas pastas do PATH, ele mostra as duas, e a de cima é a que realmente roda.

~]# which ping
/usr/sbin/ping
~]# which -a ping
/usr/sbin/ping
/usr/bin/ping

No AlmaLinux 9.8, /usr/sbin/ping é um link que aponta para /usr/bin/ping, então o resultado é o mesmo. Um programa que você instalou em /usr/local/bin roda antes do que está em /usr/bin por causa da ordem do PATH.

O [which cd] mostra /usr/bin/cd, mas quando você digita cd no shell, roda o comando interno do shell, não esse arquivo. Confira se um comando é interno com [type cd], que mostra [cd is a shell builtin].

✅ Comando whereis do Linux

O whereis usa o nome do comando para achar o executável e os manuais juntos. Ele ignora o PATH e vasculha pastas fixas como /usr/bin · /usr/sbin · /usr/lib64 · /etc · /usr/share, então até uma pasta de configuração com o mesmo nome (/etc/httpd) aparece.

OpçãoDescrição
-bSó binários. Para o httpd: /usr/sbin/httpd e /usr/lib64/httpd · /etc/httpd · /usr/share/httpd
-mSó manuais (/usr/share/man · /usr/share/info)
-sSó fontes. Numa instalação padrão do AlmaLinux 9.8, aparece só o nome, como [httpd:]
-lLista de pastas que o whereis vasculha
~]# whereis -b httpd
httpd: /usr/sbin/httpd /usr/lib64/httpd /etc/httpd /usr/share/httpd
~]# whereis -m httpd
httpd: /usr/share/man/man8/httpd.8.gz
~]# whereis passwd
passwd: /usr/bin/passwd /etc/passwd /usr/share/man/man1/passwd.1ossl.gz /usr/share/man/man1/passwd.1.gz

Se nada for encontrado, aparece só o nome, como [htop:]. O which devolve código de saída 1 quando não acha nada e o whereis devolve 0, então use o which para conferir num script se algo está instalado.

✅ Comando locate do Linux

O locate não vasculha o disco; ele procura nomes numa DB montada antes. Por isso é rápido, mas não acha arquivos criados depois que a DB foi montada.

~]# dnf -y install mlocate
~]# updatedb

Se você rodar logo depois de instalar, ainda não há DB e aparece [locate: can not stat () `/var/lib/mlocate/mlocate.db': No such file or directory]; rodar o updatedb uma vez a cria. Depois disso, o mlocate-updatedb.timer remonta a DB uma vez por dia.

Um arquivo novo só aparece depois do updatedb, e um arquivo apagado continua aparecendo até lá. Para ver só os arquivos que existem agora, adicione -e.

~]# touch report.txt
~]# locate report.txt
~]# updatedb
~]# locate report.txt
/root/work/report.txt
~]# rm -f report.txt
~]# locate report.txt
/root/work/report.txt
~]# locate -e report.txt

O PRUNEPATHS do /etc/updatedb.conf inclui /tmp · /var/tmp · /mnt · /media, então arquivos dessas pastas não aparecem nem depois do updatedb.

🔲 Opções do comando locate

OpçãoDescrição
-iIgnorar maiúsculas e minúsculas
-cSó o número de ocorrências em vez dos caminhos
-l= -nColoque um número depois para limitar os resultados a essa quantidade. -l 3
-bComparar só o nome do arquivo no fim do caminho
-eDeixar de fora arquivos que estão na DB mas não existem mais
-SInformações da DB (pastas · arquivos · tamanho)
-rBuscar com expressão regular. locate -r "httpd.conf$"

ℹ️ Aviso de afiliados
O conteúdo deste site contém links de afiliados. Quando um visitante compra um produto ou serviço por meio de um desses links, o site recebe uma comissão do vendedor. O valor que o comprador paga (em promoções, ele diminui ↓) não aumenta por causa disso. Preços, descontos e informações de estoque valem para o momento em que o texto foi escrito e podem ter mudado, por isso confirme com o vendedor antes de comprar. Os produtos são escolhidos e avaliados por critérios próprios, e o recebimento de comissão não influencia a ordem de apresentação nem o conteúdo das avaliações.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Demonstre sua humanidade: 10   +   7   =