Línea de Comandos Parte 2

10.3 - Búsqueda de archivos y contenido

El poder de encontrar cualquier cosa en Linux

¿Has perdido un archivo? ¿No recuerdas dónde guardaste algo? En Linux es súper fácil encontrar cualquier cosa.

Aprenderás 3 comandos simples:

  • find - Busca archivos por nombre
  • locate - Encuentra programas rápidamente
  • grep - Busca texto dentro de archivos
find locate grep

Herramientas de búsqueda

find + grep = ¡Todo!

Encuentra archivos y su contenido

¿Qué comando usar? Guía rápida

🔍 ¿Buscas un archivo por su NOMBRE?
  • Si es reciente (hoy/ayer) o quieres buscar en una carpeta específica → find
  • Si es un archivo viejo y quieres velocidad máxima → locate
  • Si no sabes si existe → prueba primero locate, luego find
📝 ¿Buscas TEXTO o PALABRAS dentro de archivos?
  • Siempre usa → grep
  • Si no sabes en qué archivo está → grep -r "palabra" .
🤔 ¿No recuerdas el nombre pero sí algo que decía el archivo?
  • Combina comandos: grep -r "texto que recuerdo" ~/Documentos
  • Esto buscará esa frase en TODOS tus documentos
⚡ ¿Quieres saber dónde está instalado un programa?
  • Usa: locate nombre_programa | grep bin
  • Ejemplo: locate firefox | grep bin

find - Como un detective para tus archivos

Piénsalo así: find es como un detective que busca archivos por su nombre. Le dices "busca todas las fotos" y él las encuentra.

Paso 1: Tu primera búsqueda

Imagina que perdiste una foto llamada "cumpleanos.jpg" en tu carpeta personal:

usuario@mint:~$ find . -name "cumpleanos.jpg"
./Fotos/cumpleanos.jpg
# ¡Encontrado! Está en la carpeta Fotos
¿Qué significa cada parte?
  • find = "busca"
  • . = "desde aquí" (tu carpeta actual)
  • -name = "por nombre"
  • "cumpleanos.jpg" = el archivo que buscas
¿Qué es el punto (.) y por qué es importante?

El punto . significa "la carpeta donde estoy AHORA".

Importante: find busca en esa carpeta Y en TODAS las subcarpetas (recursivamente).

También puedes usar:
find ~ → Busca en tu carpeta personal completa
find ~/Documentos → Busca solo en Documentos
find / → Busca en TODO el sistema (muy lento, necesita sudo)

Paso 2: El truco del asterisco (*)

¿Quieres encontrar TODAS tus fotos? Usa el asterisco (*) = "cualquier cosa":

usuario@mint:~$ find . -name "*.jpg"
./Fotos/playa.jpg
./Fotos/cumpleanos.jpg
./perfil.jpg
# Encuentra TODAS las fotos JPG
Ejemplos prácticos:
  • "vacaciones*" → todo lo que empiece con "vacaciones"
  • "*.mp3" → todas las canciones
  • "*.pdf" → todos los documentos PDF
Regla de oro

El asterisco (*) significa "no me importa qué hay aquí"

Paso 3: Solo archivos o solo carpetas

A veces solo quieres archivos (no carpetas) o viceversa:

Solo archivos:
usuario@mint:~$ find . -type f -name "*.mp3"
./Música/cancion.mp3
# Solo archivos de música
Solo carpetas:
usuario@mint:~$ find . -type d -name "*trabajo*"
./trabajo_universidad
# Solo carpetas
¿Cuándo usar -type y cuándo no?

Sin -type (busca TODO: archivos Y carpetas):
find . -name "trabajo" encuentra:
• ./trabajo.txt (archivo)
• ./trabajo/ (carpeta)
• ./Documentos/trabajo/ (otra carpeta)

Con -type f (solo archivos):
find . -type f -name "trabajo" encuentra:
• ./trabajo.txt (solo este)

¿Cuándo usarlo?
• Si buscas documentos/fotos/música → usa -type f
• Si buscas carpetas → usa -type d
• Si no estás seguro → no lo uses

Memoria fácil
  • -type f = "File" (archivo)
  • -type d = "Directory" (carpeta/directorio)

Los casos más comunes (copia y pega)

Nuevo concepto: El operador -o (OR)

-o significa "O" (OR en inglés).
Úsalo cuando quieras buscar "esto O aquello".

Ejemplo paso a paso:

1. Buscar solo JPG: find . -name "*.jpg"
2. Buscar solo PNG: find . -name "*.png"
3. Buscar JPG O PNG: find . -name "*.jpg" -o -name "*.png"

Traducción: "busca archivos .jpg O archivos .png"

🖼️ Encontrar fotos:
find . -name "*.jpg" -o -name "*.png"
# Todas tus fotos
🎵 Encontrar música:
find . -name "*.mp3" -o -name "*.wav"
# Todas tus canciones
📄 Encontrar documentos:
find . -name "*.pdf" -o -name "*.doc*"
# PDFs y documentos Word
📋 Buscar por fecha (hoy):
find . -name "*" -mtime -1
# Archivos de hoy
find . -type f -name "*.pdf" -mtime -7
Traducción línea por línea
  • find = busca
  • . = desde aquí (carpeta actual)
  • -type f = solo archivos (no carpetas)
  • -name "*.pdf" = que terminen en .pdf
  • -mtime -7 = modificados en los últimos 7 días
En español: "Busca desde aquí todos los archivos PDF modificados en la última semana"
Errores comunes con find
  • Error: Permission denied en muchas carpetas
    Solución: Agrega 2>/dev/null al final para ocultar errores:
    find . -name "*.jpg" 2>/dev/null
  • Error: La búsqueda es muy lenta
    Causa: Estás buscando desde / (todo el sistema)
    Solución: Busca en una carpeta más específica como ~ o ~/Documentos
  • Error: No encuentra nada pero el archivo existe
    Causa: Puede estar en una carpeta sin permisos o el nombre no coincide exactamente
    Solución: Verifica mayúsculas/minúsculas o usa -iname en lugar de -name

locate - Velocidad máxima para buscar

locate es súper rápido. Encuentra programas y archivos instantáneamente.

Uso básico de locate

usuario@mint:~$ locate firefox
/usr/bin/firefox
/usr/share/applications/firefox.desktop
# Encuentra TODO lo relacionado con Firefox

usuario@mint:~$ locate "*.pdf" | head -5
/home/usuario/curriculum.pdf
/home/usuario/manual.pdf
# Primeros 5 PDFs del sistema

Súper rápido: Como tener un índice de todo.
Limitación: Solo encuentra archivos de ayer o antes.
Para actualizar: sudo updatedb (hazlo 1 vez por semana)

Errores comunes con locate
  • Error: bash: locate: command not found
    Solución: Instala el paquete:
    sudo apt install mlocate
  • Error: No encuentra archivos que acabas de crear
    Causa: locate usa una base de datos que se actualiza una vez al día
    Solución: Actualiza manualmente con sudo updatedb y espera 1 minuto
  • Error: Muestra demasiados resultados
    Solución: Filtra con grep o usa | head -10 para ver solo los primeros 10

Trucos útiles

usuario@mint:~$ locate -c "*.mp3"
247
# Cuenta: tienes 247 canciones MP3

usuario@mint:~$ locate chrome | grep bin
/usr/bin/google-chrome
# ¿Dónde está instalado Chrome?

grep - El detective de texto

grep busca palabras dentro de archivos. Como Ctrl+F pero para todo el sistema.

Uso básico de grep

usuario@mint:~$ grep "universidad" curriculum.txt
Estudié en la Universidad Nacional
# Busca "universidad" en tu curriculum

usuario@mint:~$ ps aux | grep firefox
usuario 1234 2.5 5.2 firefox
# ¿Está Firefox ejecutándose ahora?
¿Qué es el símbolo | (pipe)?

El símbolo | (pipe o tubería) conecta dos comandos.

Significa: "toma la salida del primer comando y pásala al segundo"

Ejemplo:
locate "*.pdf" | head -5

Se lee así:
1. locate "*.pdf" → encuentra TODOS los PDFs (podrían ser cientos)
2. | → pasa esos resultados a...
3. head -5 → muestra solo los primeros 5

Sin pipe: Verías cientos de resultados
Con pipe: Solo ves los primeros 5

En archivos: grep "palabra" archivo.txt
Con pipes: comando | grep "palabra"
Muy útil: Para encontrar información específica.

Opciones útiles

usuario@mint:~$ grep -i "médico" agenda.txt
Cita médico: jueves 10am
# -i encuentra "médico", "MÉDICO", "Médico"

usuario@mint:~$ grep -c "Juan" contactos.txt
3
# -c cuenta: tienes 3 contactos llamados Juan

-i: No importa mayúsculas o minúsculas
-c: Solo cuenta las veces que aparece

Buscar en carpetas

¿Qué significa -r (recursivo)?

-r significa "recursivo" = busca en la carpeta Y todas las subcarpetas.

Sin -r:
grep "teléfono" archivo.txt
→ Busca solo en UN archivo

Con -r:
grep -r "teléfono" ~/Documentos
→ Busca en Documentos y TODAS sus subcarpetas

⚠️ Advertencia: Puede mostrar MUCHOS resultados. Usa | head -10 para limitar.

usuario@mint:~$ grep -r "teléfono" ~/Documentos
./contactos.txt:Teléfono: 555-1234
# Busca en TODAS las carpetas de Documentos

usuario@mint:~$ grep -r "cumpleaños" ~ | head -3
./agenda.txt:Cumpleaños de mamá
# Busca en todo tu home (primeros 3 resultados)

-r: Busca en la carpeta Y todas las subcarpetas
head -3: Muestra solo los primeros 3 resultados

Errores comunes con grep
  • Problema: Demasiados resultados
    Solución: Limita con | head -20 o busca en una carpeta más específica
  • Problema: No encuentra la palabra pero sé que está ahí
    Causa: grep distingue mayúsculas/minúsculas
    Solución: Usa -i para ignorar mayúsculas: grep -i "palabra"
  • Problema: Permission denied en algunas carpetas
    Solución: Agrega 2>/dev/null al final:
    grep -r "palabra" . 2>/dev/null

Práctica guiada: Conviértete en un experto

Vamos a practicar con situaciones reales. Sigue estos pasos:

Ejercicio 1: Encuentra todas tus fotos

Busca todas las imágenes JPG y PNG en tu carpeta personal:

usuario@mint:~$ find ~ -name "*.jpg" -o -name "*.png" | head -10
¿Qué deberías ver?

Una lista de hasta 10 archivos de imagen con sus rutas completas

Ejercicio 2: ¿Cuántas canciones tienes?

Cuenta todos tus archivos MP3:

usuario@mint:~$ locate -c "*.mp3"
¿Qué deberías ver?

Un número que indica cuántos archivos MP3 tienes en total

Ejercicio 3: Busca tu número de teléfono

Encuentra en qué archivos guardaste tu número:

usuario@mint:~$ grep -r "555-" ~/Documentos 2>/dev/null | head -5
¿Qué deberías ver?

Archivos que contienen números de teléfono con el formato 555-XXXX

Ejercicio 4: Archivos modificados hoy

Encuentra todos los archivos que modificaste hoy:

usuario@mint:~$ find ~ -type f -mtime -1 2>/dev/null | head -10
¿Qué deberías ver?

Los archivos que creaste o modificaste en las últimas 24 horas

¡Lo lograste! Resumen final

find

Para buscar archivos por nombre en tiempo real

find . -name "*.jpg"

locate

Para búsquedas súper rápidas en todo el sistema

locate firefox

grep

Para buscar texto dentro de archivos

grep -r "palabra" .
Tip final

Combina estos comandos con pipes (|) para búsquedas más potentes:
find . -name "*.txt" | grep "trabajo" → Encuentra archivos .txt con "trabajo" en el nombre