AccesoInicial

Leer y buscar contenido (cat, less, grep, find)

Aprende a ver el contenido de archivos, navegar documentos largos, buscar texto dentro de archivos y localizar archivos en el sistema.

Principiantelinuxclifile-system

Introducción

Ya sabes navegar el sistema de archivos, crear directorios y manipular archivos. Pero hasta ahora has trabajado con archivos como objetos: los creas, los copias, los mueves. En esta lección vas a aprender a mirar dentro de ellos y a encontrar archivos específicos en el sistema.

Cuatro comandos cubren estas tareas: cat para ver el contenido de un archivo, less para navegar archivos largos, grep para buscar texto dentro de archivos y find para localizar archivos en el sistema de archivos.

¿Por qué necesitas leer y buscar?

En Linux, la información vive en archivos de texto: configuraciones del sistema, logs de servicios, scripts, notas. Saber que un archivo existe no es suficiente: necesitas ver qué contiene. Y cuando no sabes dónde está un archivo, necesitas buscarlo.

En seguridad ofensiva, leer y buscar son habilidades de enumeración. Revisar archivos de configuración, buscar contraseñas en logs, localizar scripts ejecutados por otros usuarios: todo empieza con estos cuatro comandos.

Dos tipos de búsqueda

Es importante distinguir dos operaciones diferentes:

  • Buscar texto dentro de un archivo: sabes qué archivo mirar, pero necesitas encontrar una línea o palabra específica. Para esto usas grep.
  • Buscar un archivo en el sistema: no sabes dónde está un archivo, pero conoces su nombre o alguna característica. Para esto usas find.

La primera pregunta siempre es: ¿estoy buscando *dentro* de un archivo, o estoy buscando *el archivo*?

Lectura y búsqueda en la práctica

Vamos a trabajar con archivos reales del sistema. Empieza desde tu directorio home:

bash
1$ cd ~
2

Ver el contenido completo: cat

cat (*concatenate*) muestra el contenido completo de un archivo en la terminal. Es ideal para archivos cortos:

bash
1$ cat /etc/hostname
2kali
3

También puedes ver varios archivos a la vez:

bash
1$ cat /etc/hostname /etc/timezone
2kali
3America/New_York
4

cat es rápido y directo, pero tiene un problema: si el archivo es largo, todo el contenido se desplaza por la terminal y solo ves el final.

Para archivos que no caben en una pantalla, usa less. En lugar de imprimir todo de golpe, less te permite navegar el contenido página por página:

bash
1$ less /etc/services
2

Dentro de less, los controles básicos son:

  • Espacio o f: avanzar una página
  • b: retroceder una página
  • g: ir al principio
  • G: ir al final
  • /texto: buscar "texto" hacia adelante
  • q: salir

El archivo /etc/services lista los puertos de red y sus servicios asociados y tiene cientos de líneas. Con less puedes explorar su contenido sin perder el control de la terminal.

Buscar texto dentro de archivos: grep

grep busca líneas que contengan un patrón de texto y las muestra. Es uno de los comandos que más vas a usar en Linux:

bash
1$ grep "http" /etc/services
2http            80/tcp          www             # WorldWideWeb HTTP
3https           443/tcp                         # http protocol over TLS/SSL
4http-alt        8080/tcp        webcache        # WWW caching service
5

grep encontró todas las líneas que contienen "http" en el archivo /etc/services. Para buscar sin distinguir mayúsculas de minúsculas, usa la opción -i:

bash
1$ grep -i "HTTP" /etc/services
2

Y para buscar en todos los archivos de un directorio, añade -r (recursivo):

bash
1$ grep -r "password" /etc/ 2>/dev/null
2

Este comando busca la palabra "password" en todos los archivos dentro de /etc/. El 2>/dev/null al final oculta los mensajes de error por archivos que no tienes permiso de leer. Por ahora solo necesitas saber que silencia esos errores.

Localizar archivos en el sistema: find

find busca archivos y directorios por nombre, tipo, tamaño u otras propiedades. La sintaxis básica es find dónde-buscar -criterio valor:

bash
1$ find /home -name "notas.txt"
2/home/user/practica/notas.txt
3

Esto busca un archivo llamado exactamente "notas.txt" dentro de /home y sus subdirectorios. Para buscar por nombre parcial, usa comodines entre comillas:

bash
1$ find /home -name "*.txt"
2/home/user/practica/notas.txt
3/home/user/practica/respaldo.txt
4

Para buscar solo directorios, añade -type d. Para buscar solo archivos, usa -type f:

bash
1$ find /home -type d -name "proyecto"
2/home/user/practica/proyecto
3

El ciclo de inspección

Leer y buscar siguen un patrón natural:

  1. Localizar: ¿dónde está el archivo? → find
  2. Inspeccionar: ¿qué contiene? → cat (corto) o less (largo)
  3. Filtrar: ¿qué líneas me importan? → grep

Este ciclo es el mismo que usarás para examinar cualquier sistema: encontrar archivos interesantes, leer su contenido y extraer la información relevante. Los comandos cambian de escala (en un sistema grande buscarás entre miles de archivos), pero el patrón es el mismo.

Errores comunes

Advertencia

Usar `cat` en archivos enormes. Si haces cat en un archivo de miles de líneas, la terminal se inundará de texto. Usa less para archivos que no conoces, o head -n 20 archivo para ver solo las primeras 20 líneas.

Advertencia

Olvidar que `grep` distingue mayúsculas. grep "Password" archivo y grep "password" archivo buscan cosas diferentes. Si no encuentras lo que buscas, prueba con -i para ignorar mayúsculas.

Consejo

Combina `find` y `ls` para contexto. Si find devuelve una lista de archivos y quieres ver sus permisos y tamaños, puedes usar -ls como acción: find /home -name "*.txt" -ls. Esto muestra cada resultado con formato similar a ls -l.

Conclusión

Con cat, less, grep y find puedes ver el contenido de cualquier archivo, navegar documentos largos, buscar texto específico y localizar archivos en el sistema. Hasta ahora, cada comando que has aprendido funciona de forma independiente. En la siguiente lección aprenderás a conectar comandos entre sí usando redirección y pipes, la mecánica que convierte comandos individuales en herramientas combinadas.