Probador de patrones glob
Escribe uno o más patrones glob, pega una lista de rutas de archivos y ve al instante qué archivos coinciden, cuáles se excluyen y por qué. Útil para configuraciones de compilación, linters, ejecutores de pruebas, filtros de rutas de CI y archivos .ignore.
Última actualización:
Consejo: pega la salida de git ls-files o de find . -type f. "Elegir carpeta" solo lee los nombres de archivo; no se sube nada.
Cómo se interpretó cada patrón
Cómo usar Probador de patrones glob
- Introduce tus patrones en el cuadro Patrones glob, uno por línea. Empieza una línea con
!para excluir, o con#para un comentario. - Añade rutas de archivos: pega una lista (por ejemplo de
git ls-files), carga un archivo .txt o elige una carpeta para listar sus nombres de archivo. - Lee los resultados: las rutas verdes coinciden, las rojas no, y cada fila indica qué patrón lo decidió.
- Ajusta las opciones (archivos ocultos, ignorar mayúsculas, nombre base) para imitar la herramienta que estás configurando.
- Copia o descarga las rutas coincidentes, o revisa las tarjetas de patrones para ver en qué regex se convirtió cada glob.
Chuleta de sintaxis glob
| Patrón | Significado | Coincide | No coincide |
|---|---|---|---|
* | Cualquier carácter dentro de un segmento de la ruta | *.md → README.md | docs/guide.md |
** | Cero o más carpetas (cuando es un segmento completo) | docs/**/*.md → docs/a.md, docs/x/y/b.md | notes/a.md |
? | Exactamente un carácter (que no sea una barra) | v?.txt → v1.txt | v10.txt |
[abc] / [a-z] | Un carácter del conjunto o rango | [A-C]*.png → Banner.png | logo.png |
[!abc] / [^abc] | Un carácter que no esté en el conjunto | [!_]*.scss → main.scss | _vars.scss |
{a,b} | Cualquiera de las alternativas (expansión de llaves) | *.{jpg,png} → a.jpg, b.png | c.gif |
{1..3} | Rango numérico o de letras | part{1..3}.zip → part2.zip | part4.zip |
@(a|b) | Exactamente una de las alternativas | @(app|web).config → web.config | api.config |
+(a|b) / *(a|b) | Una o más / cero o más repeticiones | +([0-9]).log → 2024.log | v1.log |
!(a|b) | Cualquier cosa excepto las alternativas | !(index).js → main.js | index.js |
!pattern | Excluye las rutas que coinciden (línea completa) | !**/*.min.js descarta app.min.js | |
\* | Escapa un carácter especial | what\?.txt → what?.txt | whatx.txt |
Cómo funciona la coincidencia glob
Un glob se divide en cada / y cada parte se compara con el nombre de carpeta o archivo correspondiente. Los comodines como *, ? y […] nunca cruzan una barra; solo un segmento que es exactamente ** puede abarcar varias carpetas, y también puede no coincidir con ninguna carpeta, así que a/**/b coincide con a/b. Las llaves se expanden primero, así que un patrón con llaves son en realidad varios patrones. Internamente, cada glob se convierte en una expresión regular anclada a toda la ruta, que puedes ver en las tarjetas de patrones de arriba.
Los nombres que empiezan por punto están protegidos: un comodín al principio de un segmento no coincidirá con ellos a menos que el propio patrón empiece por punto o esté activada la coincidencia de archivos ocultos. Por eso **/* en la mayoría de las herramientas omite .git y .env.
Consejos para escribir globs fiables
- Pon los globs entre comillas en la línea de comandos (
"src/**/*.ts") para que tu shell no los expanda antes de que los vea la herramienta. - Usa barras normales, incluso en Windows. La mayoría de las bibliotecas glob tratan la barra invertida como carácter de escape.
- No empieces con
./en los archivos de configuración; muchas herramientas comparan con rutas sin él. Este probador elimina un./inicial en ambos lados. - Pon las exclusiones al final y hazlas específicas, por ejemplo
!**/node_modules/**en lugar de!node_modules, que solo coincide con el nombre de la carpeta en sí. - Comprueba la distinción de mayúsculas: los sistemas de archivos de Linux distinguen mayúsculas y minúsculas, mientras que los de Windows y macOS normalmente no. Usa Ignorar mayúsculas para previsualizar ambos casos.
Preguntas frecuentes
¿Qué diferencia hay entre * y ** en un glob?
Un solo * coincide con cualquier carácter dentro de un nivel de carpeta, pero nunca cruza una barra, así que src/*.js coincide con src/app.js pero no con src/lib/app.js. Un ** que forma por sí solo un segmento de la ruta (globstar) coincide con cero o más carpetas completas, así que src/**/*.js coincide con ambos.
¿Cómo funcionan aquí los patrones negativos con !?
Una ruta coincide cuando al menos un patrón normal coincide con ella y ningún patrón ! lo hace. Si solo introduces patrones !, todas las rutas empiezan incluidas y los patrones ! quitan algunas, que es como micromatch trata una lista formada solo por negaciones. Cada fila muestra el patrón que la incluyó o la excluyó.
¿Por qué *.js no coincide con .eslintrc.js ni con archivos de carpetas ocultas?
Por convención, *, ? y ** no coinciden con un nombre que empieza por punto, así que se omiten los archivos y carpetas ocultos como .git o .cache. Escribe el punto explícitamente (.*.js o **/.cache/**) o marca Incluir archivos ocultos, que funciona como la opción dot: true de minimatch, micromatch y fast-glob.
¿Se admiten patrones con llaves como {js,ts} y {1..5}?
Sí. Las llaves se expanden antes de comparar, como en Bash: *.{js,ts} se convierte en *.js y *.ts, las llaves anidadas funcionan, y también se expanden rangos como {1..5}, {01..12} (con ceros a la izquierda), {a..e} y {0..20..5} (con paso). La tarjeta del patrón muestra los patrones expandidos.
¿Se comporta exactamente como minimatch, micromatch o fast-glob?
Sigue las reglas comunes que comparten esas bibliotecas: globstar, tratamiento de archivos ocultos, expansión de llaves, clases de caracteres, extglobs y negación con !. Las bibliotecas difieren en pequeños casos límite, por ejemplo si src/** también coincide con la propia carpeta src (aquí sí, como en micromatch y picomatch). Confirma siempre los patrones poco habituales con la herramienta que estás configurando.
¿Es lo mismo que la sintaxis de .gitignore?
No exactamente. Los patrones de .gitignore sin barra coinciden a cualquier profundidad, una barra final significa solo directorios y las líneas posteriores anulan a las anteriores. Para aproximar una línea de gitignore como *.log, marca Coincidir con el nombre base o escribe **/*.log.
¿Se suben mis rutas de archivos a algún sitio?
No. La comparación se ejecuta por completo en tu navegador. Cuando eliges una carpeta, solo se leen los nombres de archivo para crear la lista; el contenido de los archivos nunca se abre ni se envía.
¿Se prueban todas las herramientas de FreeToolCabin para comprobar su calidad y precisión?
Sí. Cada herramienta del sitio pasa pruebas automáticas en navegadores reales para comprobar que el resultado es correcto y que no hay errores. Si encuentras un fallo o tienes una sugerencia, escríbenos a [email protected] y lo revisaremos.