Curso de Linux / Buscar archivos y localizar comandos con find, locate y Bash
Use find para recorrer rutas del sistema de archivos y seleccionar elementos por condiciones; use locate para consultar un índice de nombres creado previamente. Para saber cómo Bash interpreta un comando, incluidos alias y funciones, consulte type o command -v. which suele buscar ejecutables en PATH y whereis localiza archivos relacionados, pero sus resultados no sustituyen la resolución del shell.
Primero distinga si los resultados de la búsqueda son del contenido del archivo o de su ruta. Cómo encontrar una línea específica en el contenido se trata en Búsqueda y agregación de texto.
Buscar en el sistema de archivos actual con find
find recorre el punto de inicio especificado y encuentra elementos que coinciden con las condiciones como nombre, tipo, tamaño, etc. El siguiente ejercicio asume Bash y GNU find. Si ~/linux-course-11-practice ya existe, elija otro nombre. Deténgase si falla cualquier paso de preparación, especialmente mkdir o cd; no ejecute el resto desde otra ubicación.
mkdir ~/linux-course-11-practice
cd ~/linux-course-11-practice
mkdir drafts archive
touch drafts/notes.txt drafts/todo.md archive/old.txt
Después de verificar la ubicación del ejercicio con pwd, busque con .txt los archivos regulares que terminen en esa secuencia. Las comillas evitan que la shell expanda primero *.txt, pasando el patrón tal cual a find. -maxdepth 2 es una opción de GNU que solo examina hasta dos niveles desde el punto de inicio.
pwd
find . -maxdepth 2 -type f -name '*.txt'
El orden de salida depende del sistema de archivos, pero deben aparecer ambas rutas.
./drafts/notes.txt
./archive/old.txt
-type f es un archivo normal, -name especifica un patrón de nombre. Para la búsqueda de nombres sin distinción de mayúsculas y minúsculas, se puede usar find de GNU -iname. En un directorio de operación real, podría ocurrir un error debido a subrutas sin permisos, y que find haya mostrado la ruta no significa que se haya verificado el permiso para leer el contenido del archivo.
Buscar archivos mediante índice de nombres con locate
locate busca en una base de datos de nombres de archivo previamente construida en lugar de recorrer el árbol actual. Si la base de datos está lista, la búsqueda de nombres en un rango amplio es rápida, pero los archivos añadidos después de la última actualización podrían no estar todavía, y los nombres eliminados podrían permanecer temporalmente. Según la implementación y la configuración, la forma en que se muestran las rutas sin permiso también varía.
locate hosts
/etc/hosts puede estar incluido en los resultados de búsqueda, pero podrían aparecer otras rutas. Si locate no existe o la base de datos aún no está disponible, compruebe las herramientas provistas por la distribución instalada y el método de actualización del índice. Por ejemplo, updatedb de GNU Findutils actualiza el índice, pero la ubicación de ejecución y los permisos dependen de la configuración del sistema. Para asegurarse de verificar archivos que existen en este momento, vuelva a comprobar con find o ls.
Verificar la ruta del archivo ejecutable
which normalmente busca el archivo ejecutable en la ruta de búsqueda de la variable de entorno PATH. Por ejemplo, el siguiente comando puede mostrar la ruta del archivo ejecutable ls. Los resultados como /usr/bin/ls o /bin/ls varían según el sistema.
which ls
Sin embargo, la implementación de which difiere según el sistema, y no se debe asumir que refleja de la misma manera incluso cuando un alias de shell o función intercepta realmente la entrada. Para verificar cómo el shell actual interpreta un nombre de comando en Bash, el siguiente comando es más directo.
type -a ls
command -v ls
type -a puede mostrar alias, funciones, comandos integrados y candidatos a archivos ejecutables con el mismo nombre, y command -v es útil para comprobar si el nombre se puede encontrar en el shell. La forma de la salida varía según la configuración del shell actual.
Ver ubicaciones de binarios y manuales con whereis
whereis es una herramienta que muestra las ubicaciones de archivos ejecutables, fuentes y manuales relacionadas con un nombre de comando. Por ejemplo, whereis ls puede mostrar la ruta del binario junto con la ruta del manual. Esto no significa que todos los elementos estén instalados, y las ubicaciones de búsqueda también varían según la implementación y configuración.
whereis ls
| Cosas que interesan | Herramienta a usar primero | Precauciones |
|---|---|---|
| Archivos que cumplen las condiciones del árbol de directorio actual | find |
El tiempo de búsqueda y los errores dependen del alcance y de los permisos |
| Nombres de archivos registrados en el índice | locate |
Si el índice es antiguo, puede diferir del estado real |
| Ruta del archivo ejecutable en PATH | which |
Distinguir entre alias y funciones mediante la interpretación de la shell |
| Cómo la shell interpreta el nombre del comando | type -a, command -v |
Depende de la configuración actual de la shell |
| Ubicación del binario y del manual del comando | whereis |
Los objetivos y resultados de la búsqueda dependen del entorno. |
La búsqueda por nombre de archivo y la búsqueda de interpretación de comandos son problemas diferentes. Encontrar un archivo llamado ls después de find no significa que ls ingresado en la shell actual ejecute necesariamente ese archivo. Si hay confusión, verifique los resultados de type -a ls.
En Ubuntu 26.04, si no existe locate, puede preparar el índice después de sudo apt install plocate mediante sudo updatedb. En Rocky Linux 9, primero verifique el paquete proporcionado por el repositorio activo mediante dnf provides '*/locate' e instale el paquete correspondiente. updatedb recorre el sistema, así que realícelo en una VM de práctica, y tenga en cuenta que debido a rutas excluidas, permisos y momento de actualización del índice, los resultados de la búsqueda pueden diferir de la lista de archivos en tiempo real.
Documentación oficial
Manual de GNU Findutils para find y locate, documentación de comandos internos de GNU Bash para type y command. Para las opciones por implementación de whereis, consulte man whereis en el sistema instalado.




