Inicio › Herramientas para desarrolladores › Probador de patrones glob

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:

Opciones

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

    Publicidad
    Publicidad

    Cómo usar Probador de patrones glob

    1. Introduce tus patrones en el cuadro Patrones glob, uno por línea. Empieza una línea con ! para excluir, o con # para un comentario.
    2. 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.
    3. Lee los resultados: las rutas verdes coinciden, las rojas no, y cada fila indica qué patrón lo decidió.
    4. Ajusta las opciones (archivos ocultos, ignorar mayúsculas, nombre base) para imitar la herramienta que estás configurando.
    5. 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ónSignificadoCoincideNo coincide
    *Cualquier carácter dentro de un segmento de la ruta*.md → README.mddocs/guide.md
    **Cero o más carpetas (cuando es un segmento completo)docs/**/*.md → docs/a.md, docs/x/y/b.mdnotes/a.md
    ?Exactamente un carácter (que no sea una barra)v?.txt → v1.txtv10.txt
    [abc] / [a-z]Un carácter del conjunto o rango[A-C]*.png → Banner.pnglogo.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.pngc.gif
    {1..3}Rango numérico o de letraspart{1..3}.zip → part2.zippart4.zip
    @(a|b)Exactamente una de las alternativas@(app|web).config → web.configapi.config
    +(a|b) / *(a|b)Una o más / cero o más repeticiones+([0-9]).log → 2024.logv1.log
    !(a|b)Cualquier cosa excepto las alternativas!(index).js → main.jsindex.js
    !patternExcluye las rutas que coinciden (línea completa)!**/*.min.js descarta app.min.js
    \*Escapa un carácter especialwhat\?.txt → what?.txtwhatx.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.

    Herramientas relacionadas

    Ver todas las de Entornos de prueba de código →