which, whereis y locate en Linux: 3 comandos para ver la ubicación (ruta)

Aviso de afiliados v3.1
Aviso de afiliados v3.2 (móvil)
Entorno de pruebaFamilia RHELAlmaLinux 9.8Cuenta rootVerificado el 2026-10-07
Comandos de bĆŗsquedawhichwhereislocate

A veces quieres editar httpd.conf y no sabes dónde estÔ el archivo, o hay un comando con el mismo nombre en dos sitios y no sabes cuÔl se ejecuta. El comando which de Linux encuentra el archivo que de verdad se ejecuta, el comando whereis de Linux encuentra el ejecutable junto con las carpetas de configuración y los manuales, y el comando locate encuentra todas las rutas que contienen el nombre. Comparo los tres en una tabla y puedes probarlos en un servidor virtual dentro del navegador.

En AlmaLinux 9.8, which viene en el paquete which 2.21 y whereis en util-linux 2.37.4, asĆ­ que funcionan desde el principio; locate, en cambio, necesita instalar aparte el paquete mlocate 0.26.

āœ… Diferencias entre which, whereis y locate

Los tres comandos buscan en sitios distintos. which y whereis recorren carpetas fijas en el momento, mientras que locate busca nombres en una lista de archivos (BD) creada de antemano.

ComandoQué encuentraDónde buscaArchivos nuevos
whichEl Ćŗnico archivo de comando que se ejecuta y los aliasCarpetas incluidas en PATHLos encuentra al momento
whereisEjecutable · carpetas de configuración · manualesCarpetas fijas como /usr/bin · /etc · /usr/share/manLos encuentra al momento
locateTodos los archivos y carpetas que contienen el nombreUna BD creada de antemano (/var/lib/mlocate/mlocate.db)Los encuentra tras updatedb

Si buscas el mismo httpd con which y con whereis, la diferencia salta a la vista.

~]# 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

locate muestra todas las rutas que coinciden aunque sea con parte del nombre, así que [locate httpd.conf] devuelve, ademÔs del archivo de configuración, el manual (httpd.conf.5.gz) y las copias de seguridad.

En el servidor virtual de abajo, elige which, whereis o locate a la izquierda para cambiar los chips; al pulsar un chip se escribe ese comando. TambiƩn puedes teclearlo.

Simulador de comandos de ubicaciónAlmaLinux 9.8
[root@server work]#
Funciona solo en tu navegador y no toca ningún servidor real. Elige un comando a la izquierda para cambiar los chips de abajo; al pulsar un chip se escribe ese comando. Busca el mismo httpd con los tres comandos y compara los resultados, y con locate crea un archivo nuevo y búscalo antes y después de updatedb. Si algo se enreda, pulsa [Empezar de nuevo]; escribe uknew help para ver los comandos disponibles.

Para buscar archivos por tamaño o fecha de modificación en lugar de por nombre, se usa el comando find, y la ruta de la carpeta actual se consulta con el comando pwd.

āœ… Comando which de Linux

which recorre en orden las carpetas de PATH desde el principio y muestra el primer ejecutable que encuentra. Ese es el archivo que se ejecuta de verdad al escribir el comando.

En AlmaLinux, bash pasa la lista de alias a which, asĆ­ que un comando con alias muestra el alias y el archivo real. Si no estĆ” en ningĆŗn lugar de PATH, aparece [no comando 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)

En la prÔctica, -a es la única opción. Cuando el mismo nombre estÔ en dos carpetas de PATH muestra ambos, y el de arriba es el que se ejecuta.

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

En AlmaLinux 9.8, /usr/sbin/ping es un enlace a /usr/bin/ping, asĆ­ que el resultado es el mismo. Un programa que instales tĆŗ en /usr/local/bin se ejecuta antes que el de /usr/bin por el orden de PATH.

[which cd] muestra /usr/bin/cd, pero al escribir cd en el shell se ejecuta el comando interno del shell, no este archivo. Para saber si es interno usa [type cd], que muestra [cd is a shell builtin].

āœ… Comando whereis de Linux

whereis usa el nombre del comando para encontrar el ejecutable y sus manuales a la vez. No depende de PATH y recorre carpetas fijas como /usr/bin · /usr/sbin · /usr/lib64 · /etc · /usr/share, así que aparece incluso la carpeta de configuración del mismo nombre (/etc/httpd).

OpciónDescripción
-bSolo ejecutables. Para httpd: /usr/sbin/httpd y /usr/lib64/httpd Ā· /etc/httpd Ā· /usr/share/httpd
-mSolo manuales (/usr/share/man Ā· /usr/share/info)
-sSolo fuentes. En una instalación estÔndar de AlmaLinux 9.8 solo sale el nombre, como [httpd:]
-lLista de carpetas que recorre whereis
~]# 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

Si no encuentra nada, solo sale el nombre, como [htop:]. which devuelve el código de salida 1 cuando no encuentra nada y whereis devuelve 0, así que en un script usa which para comprobar si algo estÔ instalado.

āœ… Comando locate de Linux

locate no recorre el disco, sino que busca nombres en una BD creada de antemano. Por eso es rƔpido, pero no encuentra archivos creados despuƩs de generar la BD.

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

Si lo ejecutas justo despuĆ©s de instalarlo, todavĆ­a no hay BD y aparece [locate: can not stat () `/var/lib/mlocate/mlocate.db’: No such file or directory]; al ejecutar updatedb una vez se crea. A partir de ahĆ­, mlocate-updatedb.timer reconstruye la BD una vez al dĆ­a.

Un archivo nuevo no aparece hasta que se ejecuta updatedb, y uno borrado sigue apareciendo hasta entonces. Para ver solo los que existen ahora, aƱade -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

PRUNEPATHS en /etc/updatedb.conf incluye /tmp Ā· /var/tmp Ā· /mnt Ā· /media, asĆ­ que los archivos de esas carpetas no aparecen aunque ejecutes updatedb.

šŸ”² Opciones del comando locate

OpciónDescripción
-iBuscar sin distinguir mayĆŗsculas
-cSolo el nĆŗmero de resultados en lugar de las rutas
-l= -nAñade un número para limitar los resultados. -l 3
-bBuscar solo en el nombre de archivo al final de la ruta
-eOmitir archivos que estƔn en la BD pero ya no existen
-SInformación de la BD (carpetas · archivos · tamaño)
-rBuscar con una expresión regular. locate -r ā€œhttpd.conf$ā€

ā„¹ļø Aviso de afiliados
El contenido de este sitio incluye enlaces de afiliado. Cuando un visitante compra un producto o servicio a travĆ©s de uno de ellos, el sitio recibe una comisión del vendedor. El importe que paga el comprador(baja durante las promociones ↓)no aumenta. Los precios, descuentos y existencias publicados corresponden al momento de redacción y pueden variar, asĆ­ que confĆ­rmalos con el vendedor antes de comprar. Los productos se eligen y evalĆŗan con criterios propios, y las comisiones no influyen en el orden ni en el contenido de las reseƱas.

Deja una respuesta

Tu dirección de correo electrónico no serÔ publicada. Los campos obligatorios estÔn marcados con *

Demuestra que eres humano: 6   +   7   =