findstr - Búsqueda avanzada de texto
El comando find solo permite búsquedas simples de cadenas, pero el comando findstr admite búsquedas avanzadas de patrones con expresiones regulares.
Este artículo explica findstr desde lo básico hasta las expresiones regulares, las condiciones múltiples y las tuberías, con código de ejemplo.
Sintaxis básica de findstr
FINDSTR [opciones] "cadena_de_búsqueda" [nombre_de_archivo]
Ejemplo básico
Busca en un archivo las líneas que contienen una cadena concreta.
findstr "error" log.txt
Opciones principales
| Opción | Descripción |
|---|---|
/I | Búsqueda sin distinguir mayúsculas de minúsculas |
/S | Busca en las subcarpetas de forma recursiva |
/R | Trata las cadenas de búsqueda como expresiones regulares |
/L | Trata las cadenas de búsqueda de forma literal |
/C:"cadena" | Busca la cadena tal cual, incluidos los espacios (literal de forma predeterminada) |
/V | Muestra las líneas que no coinciden (exclusión) |
/N | Muestra el número de línea de las coincidencias |
/M | Muestra solo los nombres de los archivos con coincidencias |
/B | Busca el patrón al principio de la línea |
/E | Busca el patrón al final de la línea |
/X | Muestra solo las líneas que coinciden exactamente por completo |
/G:archivo | Lee las cadenas de búsqueda de un archivo |
/D:directorios | Busca en una lista de directorios separados por punto y coma |
Una cadena de búsqueda indicada sin /C: se interpreta como expresión regular si contiene caracteres especiales como . o *. Para buscar . o $ de forma literal, especifica /L o escápalos con una barra invertida, como en \..
Búsqueda sin distinguir mayúsculas y minúsculas (/I)
findstr /I "warning" log.txt
Warning, WARNING y warning coinciden todos.
Buscar cadenas con espacios (/C:)
Usa la opción /C: para buscar una cadena que contiene espacios.
findstr /C:"disk full" log.txt
Si escribes findstr "disk full" log.txt sin /C:, se muestran las líneas que contienen «disk» o «full» (búsqueda OR). Usa /C: para buscar la cadena exacta con el espacio.
Mostrar las líneas que no coinciden (/V)
La opción /V muestra las líneas que no coinciden con la cadena de búsqueda.
findstr /V "^rem " script.cmd
Mostrar números de línea (/N)
findstr /N "TODO" main.cmd

中小企業経営者のためのRPA入門 RPA導入を成功させる方法

60分でわかる! AIエージェント 超 入門

コマンドラインの黒い画面が怖いんです。

知識・才能ゼロでもらく~に月10万円稼ぐ! よくわかるAI副業超入門
Búsqueda con expresiones regulares
FINDSTR admite expresiones regulares básicas.
Expresiones regulares disponibles
| Símbolo | Significado | Ejemplo |
|---|---|---|
. | Cualquier carácter | h.t → hot, hat |
* | Cero o más repeticiones del carácter anterior | ab*c → ac, abc, abbc |
^ | Inicio de línea | ^echo |
$ | Final de línea | error$ |
[abc] | Cualquiera de los caracteres entre corchetes | [aeiou] → vocales |
[a-z] | Cualquier carácter del rango | [0-9] → dígitos |
[^abc] | Cualquier carácter que no esté entre corchetes | [^0-9] → no dígitos |
\< | Inicio de palabra | \<the |
\> | Final de palabra | end\> |
Ejemplos de expresiones regulares
findstr /R "^echo" script.cmd
findstr /R "[0-9]" data.txt
findstr /R "[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*" log.txt
Las expresiones regulares de FINDSTR son muy básicas. No se admiten funciones extendidas como + (una o más repeticiones), ? (cero o una), | (OR) ni () (agrupación).
Búsqueda con varias condiciones
Búsqueda OR (líneas que contienen alguna de las cadenas)
Separa las cadenas de búsqueda con espacios para mostrar las líneas que coincidan con cualquiera de ellas.
findstr /I "error warning" log.txt
Búsqueda AND (líneas que contienen todas las cadenas)
FINDSTR no tiene una opción AND, así que encadena comandos con una tubería para filtrar los resultados.
findstr /I "error" log.txt | findstr /I "database"
Comprobar el resultado
FINDSTR devuelve el código de salida (nivel de error) 0 si encuentra una línea coincidente y 1 si no encuentra ninguna. Puedes usarlo para comprobar la existencia en un archivo por lotes.
@echo off
findstr /I /C:"error" log.txt >nul
IF %ERRORLEVEL% EQU 0 (
echo Hay errores registrados.
) ELSE (
echo No hay errores registrados.
)
Buscar en varios archivos
Con comodines
findstr "error" *.txt
Incluir subcarpetas (/S)
findstr /S "TODO" *.cmd
Mostrar solo los nombres de los archivos coincidentes (/M)
findstr /M /S "password" *.txt
Solo se muestran los nombres de los archivos que contienen la cadena, no su contenido.
Combinar con tuberías
Combina findstr con la tubería | para filtrar la salida de otros comandos.
tasklist | findstr /I "chrome"
netstat -an | findstr "443"
Diferencias entre findstr y find
| Característica | find | findstr |
|---|---|---|
| Expresiones regulares | × | ○ |
| Búsqueda recursiva | × | ○ (/S) |
| Varias condiciones | × | ○ (separadas por espacios, /G) |
| Números de línea | ○ (/N) | ○ (/N) |
| Contar líneas coincidentes | ○ (/C) | × |
| Sin distinguir mayúsculas | ○ (/I) | ○ (/I) |
| Exclusión | ○ (/V) | ○ (/V) |
FINDSTR puede no manejar correctamente archivos UTF-8 o UTF-16. Si los resultados no son los esperados en archivos con japonés u otro texto no ASCII, comprueba la codificación del archivo. Consulta también el artículo sobre codificación.
Usa find para búsquedas simples de cadenas fijas y findstr cuando necesites expresiones regulares o búsqueda en subcarpetas.
Resumen
Este artículo explicó cómo usar el comando findstr.
FINDSTR es un comando potente para búsquedas avanzadas de texto que find no puede realizar, como expresiones regulares, búsqueda recursiva en subcarpetas e integración con tuberías.