Linux / Comandos / which, whereis, locate / Encontrando ubicaciones de comandos

En Linux, which se usa principalmente para encontrar archivos ejecutables en PATH, whereis encuentra archivos relacionados como ejecutables y manuales en ubicaciones predeterminadas. locate busca en una base de datos de nombres de archivos prehecha, por lo que también puede encontrar rápidamente archivos normales, pero los resultados pueden diferir del estado actual.

¿Qué comando debería usarse?

  • Ruta del archivo ejecutable: Verifica con which find o con el command -v find del shell para ver qué comandos se pueden encontrar en el entorno actual.
  • Archivos ejecutables y manuales: Usa whereis find para comprobar si los programas y manuales/fuentes relacionados están en ubicaciones conocidas.
  • Buscar por nombre de archivo: locate busca en rutas indexadas, y si necesitas la información más actualizada, puedes usar find para buscar directamente en un directorio específico.

El alcance de la búsqueda y los resultados varían según la distribución, los programas instalados, los permisos de usuario y la configuración. Las rutas de salida a continuación son ejemplos con fines explicativos y pueden no ser las mismas en todos los sistemas.

Verifique los ejecutables con which y command -v

PATH es una variable de entorno que contiene una lista de directorios para buscar al ejecutar un comando. El siguiente comando encuentra la ruta de un ejecutable llamado find.

which find

Por ejemplo, /usr/bin/find puede ser la salida. Si no se muestra ninguna ruta, verifique si el programa está instalado y confirme PATH. Sin embargo, la implementación de which y el manejo de alias difieren según el sistema, por lo que también es buena idea revisar los comandos integrados de la shell para ver cómo la shell actual interpreta los nombres.

command -v find
type -a find

En Bash, command -v muestra el nombre o la ruta utilizada para llamar a un comando, y type -a muestra los elementos encontrados, como alias, funciones, comandos integrados y archivos ejecutables con ese nombre. Los comandos integrados de Shell o los alias pueden no tener una ruta de archivo ejecutable separada. Puedes verificar su comportamiento en Descripción del comando incorporado de Bash.

Encontrar archivos relacionados con whereis

whereis busca los archivos ejecutables del programa, fuente y archivos de manual en ubicaciones estándar y en las rutas de búsqueda configuradas.

whereis find

La lista de resultados muestra las rutas encontradas después de find:. Si desea ver solo los archivos ejecutables, puede usar whereis -b find; si desea ver solo los archivos manuales, puede usar whereis -m find. Si el archivo no está instalado o se encuentra fuera de la ruta de búsqueda, no se mostrará, por lo que la falta de resultados no significa necesariamente que el archivo no esté en el sistema.

En util-linux, whereis -l muestra las ubicaciones de búsqueda. Para detalles sobre el rango de búsqueda, consulte la documentación de util-linux whereis .

Buscando nombres de archivos con locate

locate busca entradas en la base de datos creada por updatedb que coincidan con un nombre o ruta. Por ejemplo, el siguiente comando encuentra entradas en las rutas indexadas que contienen find.

locate find

La salida puede incluir no solo archivos ejecutables, sino también manuales o archivos con otros nombres. Las opciones pueden variar según la implementación instalada, así que primero revise locate --help. Por ejemplo, en plocate, puede limitar los resultados a un máximo de 10 de la siguiente manera.

locate -l 10 find

Si la base de datos está desactualizada, pueden faltar archivos nuevos y pueden permanecer rutas que ya fueron eliminadas. Las rutas excluidas de la búsqueda y los permisos de acceso del usuario también afectan los resultados. La distribución puede actualizar periódicamente la base de datos, y en un entorno donde se permite la administración del sistema, puede actualizarla directamente con sudo updatedb. Debido a que esto puede escanear un conjunto amplio de directorios del sistema, verifique las políticas de gestión antes de ejecutarlo. La implementación y los manuales relacionados se pueden encontrar en documentación oficial de plocate.

Verificar el estado de la instalación y los archivos más recientes

locate puede no estar instalado. Por ejemplo, puede usar el paquete Ubuntu 24.04 plocate, y en un entorno con privilegios administrativos y acceso al repositorio de paquetes, puede instalarlo de la siguiente manera.

sudo apt update
sudo apt install plocate

En otras distribuciones o versiones, los nombres de los paquetes y los métodos de actualización pueden diferir, por lo que consulte la documentación de la distribución correspondiente. Si la base de datos aún no existe o no está actualizada después de la instalación, el administrador puede necesitar inicializarla o actualizarla.

Para encontrar el archivo actual directamente en su directorio personal sin esperar a la base de datos, haga lo siguiente:

find "$HOME" -name 'example.txt'

Este comando busca directamente en el árbol de directorios especificado, por lo que puede tardar más que locate y no puede buscar en directorios para los que no tenga permisos de acceso. Reemplace example.txt con el nombre de archivo real que está buscando y mantenga las comillas para que el patrón de búsqueda no sea expandido por la shell de antemano.