Testador de padrão de glob da shell
Guia
Testador de padrão de glob da shell
Teste padrões glob contra uma lista de caminhos de arquivos e veja exatamente quais caminhos correspondem — em tempo real, com semânticas para Bash, Zsh, .gitignore, Python e Go fnmatch, e Go path.Match. Digite um padrão como src/**/*.{js,ts}, cole caminhos e observe que as correspondências ficam destacadas em verde e os não-matches desaparecem enquanto você digita.
Como usar
- Insira um padrão glob no campo Padrão Glob (por exemplo
**/*.log). - Escolha um Shell / Modo — o mesmo padrão pode corresponder a diferentes conjuntos de caminhos dependendo de se estiver em Bash, .gitignore, Python
fnmatch, ou Go. - Cole o seu caminhos de arquivos um por linha — ou clique em um exemplo pré-definido.
- Correspondências destacam-se em verde com um ícone de verificação; não-correspondências permanecem cinza. A resumo mostra a contagem e uma nota sobre o modo escolhido.
- Prefixe seu padrão com
!para inverter a correspondência (destaque tudo que não corresponde). não Para inverter a correspondência.
Características
- Cinco modos de shell – Bash (com globstar), Zsh extended_glob, .gitignore, Python
fnmatch, e Gopath.Match, cada um com as semânticas corretas para*,**,?, e expansão de chaves. - Destaque em tempo real – Os caminhos são reavaliados enquanto você digita o padrão; não há botão de envio.
- Expansão de chaves –
{a,b,c}alternativas em modos Bash e Zsh, incluindo aninhamento e produtos cruzados comosrc/{js,ts}/**/*.{spec,test}.ts. - Classes de caracteres –
[abc],[!abc]classes negadas e intervalos como[A-Z]. - Negação – Prefixe qualquer padrão com
!para inverter a correspondência. - Notas do modo – Uma explicação breve aparece abaixo de cada resultado, explicando como o modo escolhido interpreta o padrão.
- Exemplos rápidos – Carregue um layout de projeto web, um filtro de log estilo .gitignore ou um exemplo de documentos/README para aprender por inspeção.
- Somente no lado do cliente – Padrões e caminhos nunca saem do seu navegador; funciona offline uma vez carregado.
Casos de uso comuns
- Depuração de regras .gitignore – Cole uma lista de caminhos de
git statuse veja quais seriam ignorados por uma regra candidata. - Escrita de argumentos de build com glob – Valide que um padrão passado para
tsc,esbuild, ouprettier --writecorresponde aos arquivos que você espera e a nada mais. - Elaboração de filtros de caminhos para CI – Confirme que um
paths:filtro em GitHub Actions ou GitLab CI atinge o subconjunto correto de arquivos antes de empurrar. - Tradução de scripts de shell – Verifique que um padrão ainda funciona após portar o código entre Bash e um serviço em Python ou Go.
- Ensino de semânticas de glob – Mostre aos alunos de forma concreta por que
*não atravessa limites de diretório em Bash, mas sim emfnmatch.
Perguntas frequentes
-
Qual a diferença entre * e ** em um padrão glob?
Um único
*corresponde a qualquer caractere dentro de um segmento de caminho, mas não atravessa um separador de diretório (/). O duplo**(chamado globstar) corresponde a qualquer número de caracteres em qualquer número de segmentos de diretório. Assim,src/*.jscoincidemsrc/index.jsmas nãosrc/utils/index.js, enquantosrc/**/*.jscorresponde a ambos. Não todos os dialectos de glob suportam**— Pythonfnmatche Gopath.Matchtratam os dois asteriscos como dois tokens separados.*Como a correspondência de glob difere de uma expressão regular? -
Os glob são uma linguagem de padrão muito mais simples, projetada para corresponder caminhos de arquivos. A maioria dos caracteres são literais:
, e (em algumas shells)
*,?,[...]são os únicos metacaracteres. Não há sintaxe de quantificadores, nenhum ancoramento, nenhum lookahead, nem referências de retorno. As implementações traduzem internamente o glob para uma expressão regular, mas os usuários não precisam pensar em termos de regex. O glob foi intencionalmente simplificado para que os comandos de shell permaneçam curtos e previsíveis.{...}Por que a expansão de chaves não funciona em todos os dialectos de glob? -
A expansão de chaves (
expandido para três alternativas) é tecnicamente uma característica do shell em Bash e Zsh, avaliada antes da correspondência do glob. O shell expande a expressão de chaves em múltiplos argumentos, e os arquivos resultantes são correspondidos independentemente. Bibliotecas puro de glob usadas por ferramentas como
{a,b,c}(emgit), Python.gitignorenão implementam expansão de chaves porque não faz parte realmente da linguagem de glob — é apenas um passo pré-processamento do nível do shell.fnmatch, e Gopath.MatchO que significa o ! inicial em um padrão glob? -
O significado exato depende do contexto. Dentro de uma classe de caracteres,
negativa a classe — corresponde a qualquer caractere individual exceto
[!abc]. Como caractere inicial em um padrão completo,a,b, oucé principalmente uma!função onde ele re-inclui um caminho anteriormente ignorado. A maioria dos shells não trata um inicial.gitignoreem um padrão glob como negação por si só — eles geram erro (expansão de histórico em Zsh) ou o passam. Neste teste, um inicial!é interpretado como uma conveniência: inverte a correspondência para que os caminhos não correspondentes sejam destacados em verde.!por exemplo, src/**/*.{js,ts}
Instale nossas extensões
Adicione ferramentas de IO ao seu navegador favorito para acesso instantâneo e pesquisa mais rápida
恵 O placar chegou!
Placar é uma forma divertida de acompanhar seus jogos, todos os dados são armazenados em seu navegador. Mais recursos serão lançados em breve!
Ferramentas essenciais
Ver tudo Novas chegadas
Ver tudoAtualizar: Nosso ferramenta mais recente foi adicionado em 16 de junho de 2026
