Búsqueda de archivos y contenido
🎯 Objetivo del módulo Aprender a localizar archivos, buscar texto dentro de ellos y filtrar información relevante en sistemas grandes.
📌 En sistemas reales hay miles o millones de archivos. Saber buscar bien = ahorrar horas de trabajo.
1. Conceptos clave #
Dos tipos de búsqueda #
- Buscar archivos (por nombre, tamaño, fecha…)
- Buscar texto dentro de archivos
2. Comandos del módulo #
| Linux | Windows CMD | PowerShell |
|---|---|---|
find | dir /s | Get-ChildItem -Recurse |
locate | ❌ | ❌ |
grep | findstr | Select-String |
which | where | Get-Command |
whereis | ❌ | ❌ |
3. find #
Categoría #
Búsqueda de archivos
Descripción #
Busca archivos y directorios recorriendo el sistema según criterios.
Sintaxis #
1find ruta [condiciones] [acciones]
Opciones más usadas #
| Opción | Significado |
|---|---|
-name | nombre exacto |
-iname | nombre sin distinguir mayúsculas |
-type | tipo (f, d) |
-size | tamaño |
-mtime | fecha de modificación |
-exec | ejecutar comando |
Ejemplos básicos #
1find . -name archivo.txt 2find /etc -type f 3find /home -iname "*.jpg"
Ejemplos útiles reales #
1find / -name "*.log" 2>/dev/null 2find . -type f -size +10M 3find . -mtime -1
Ejemplo avanzado #
1find . -name "*.tmp" -exec rm -- {} +
Equivalente Windows #
- CMD:
1dir *.txt /s
- PowerShell:
1Get-ChildItem -Recurse -Filter "*.txt"
4. locate #
Categoría #
Búsqueda rápida
Descripción #
Busca archivos usando una base de datos indexada.
Ventaja #
Mucho más rápido que find.
Inconveniente #
Puede no estar actualizado.
Uso #
1locate archivo.txt
Actualizar base de datos #
1sudo updatedb
Cuándo usar #
✔ Cuando buscas algo por nombre ✔ Cuando no necesitas resultados exactos en tiempo real
5. grep #
Categoría #
Búsqueda de texto
Descripción #
Busca texto dentro de archivos o salidas de otros comandos.
Sintaxis #
1grep [opciones] patrón archivo
Opciones más importantes #
| Opción | Significado |
|---|---|
-i | ignora mayúsculas |
-r | recursivo |
-n | muestra número de línea |
-v | excluye coincidencias |
--color | resalta |
Ejemplos básicos #
1grep "root" /etc/passwd 2grep -i "error" log.txt
Búsqueda recursiva #
1grep -R "password" .
Combinado con otros comandos #
1ps aux | grep nginx 2grep -i error log.txt
Equivalente Windows #
- CMD:
1findstr "error" log.txt
- PowerShell:
1Select-String "error" log.txt
6. Casos reales MUY habituales #
Buscar errores en logs #
1grep -i error /var/log/syslog
Ver procesos concretos #
1ps aux | grep mysql
Buscar referencias a una clave de configuración #
1grep -R "password" ./config
7. Errores comunes #
- ❌ Usar
find /sin redirigir errores - ❌ Olvidar
-Rengrep - ❌ No entrecomillar patrones
- ❌ Buscar texto con
find
8. which - ¿qué ejecutable se está usando? #
¿Para qué sirve? #
Busca ejecutables en el $PATH y muestra la ruta encontrada. No es fiable para saber si el nombre corresponde a un alias, una función o un comando interno de la shell; para eso es preferible type o command -V.
👉 Ideal para:
- Saber qué versión de un comando se está usando
- Detectar conflictos (
python,node,java, etc.) - Depurar errores de “no es el comando que yo esperaba”
Sintaxis básica #
1which comando
Modificadores importantes #
| Opción | Qué hace |
|---|---|
-a | Muestra todas las coincidencias en el $PATH |
--help | Ayuda |
--version | Versión de which |
Ejemplos prácticos #
1which ls
Salida típica:
1/bin/ls
1which python3
1/usr/bin/python3
1which -a python3
1/usr/local/bin/python3 2/usr/bin/python3
NOTA: El sistema ejecuta el primero que aparece en el
$PATH
Ejemplo didáctico típico #
1which node
➡️ Sirve para comprobar si Node está instalado y desde dónde se ejecuta.
9. whereis - ¿dónde está TODO lo relacionado con un comando? #
¿Para qué sirve? #
Busca binarios, código fuente y páginas de manual de un comando.
👉 A diferencia de which:
- No depende del
$PATH - Busca en rutas estándar del sistema
Sintaxis básica #
1whereis comando
Modificadores importantes #
| Opción | Qué hace |
|---|---|
-b | Solo binarios |
-m | Solo páginas man |
-s | Solo código fuente |
-a | Muestra todas las coincidencias |
-B ruta | Define rutas para binarios |
-M ruta | Define rutas para man |
-S ruta | Define rutas para fuentes |
Ejemplos prácticos #
1whereis ls
1ls: /bin/ls /usr/share/man/man1/ls.1.gz
1whereis python
1python: /usr/bin/python3 /usr/lib/python3.12 /usr/share/man/man1/python3.1.gz
1whereis -b python
1python: /usr/bin/python3
1whereis -m ls
1ls: /usr/share/man/man1/ls.1.gz
Ejemplo didáctico típico #
1whereis nano
➡️ Sirve para:
- Ver si está instalado
- Localizar el manual
- Localizar archivos asociados en las rutas que examina
whereis
10. which vs whereis (tabla clara para el curso) #
| Característica | which | whereis |
|---|---|---|
Usa $PATH | ✅ Sí | ❌ No |
| Considera alias y funciones | ❌ No | ❌ No |
| Busca man y fuentes | ❌ No | ✅ Sí |
| Ideal para depurar versiones | ⭐⭐⭐ | ⭐ |
| Ideal para explorar instalación | ⭐ | ⭐⭐⭐ |
Resumen del tema
Conceptos clave #
find(Búsqueda en Sistema de Archivos): localiza archivos y directorios por nombre (-name "*.log"), tipo (-type f/-type d), tamaño (-size +10M) o fecha (-mtime -7).grep(Búsqueda en Contenido de Texto): filtra líneas que coinciden con expresiones; opciones clave:-i(insensible a mayúsculas),-r/-R(recursivo),-n(número de línea),-v(invertir coincidencia).whichvswhereis:whichbusca ejecutables en el$PATH;whereislocaliza binarios, páginas de manual y fuentes en rutas estándar. Para conocer cómo resolverá Bash un nombre, incluidos alias y funciones, usatypeocommand -V.
Qué debes recordar #
Usa find para buscar archivos en el disco y grep para buscar cadenas de texto dentro de archivos o en la salida de comandos.