MODULO 2.3

🔍 Glob e Grep: Busca Avancada no Codebase

Encontre arquivos por padrao com Glob e busque conteudo com Grep. Duas ferramentas essenciais para navegar codebases grandes e localizar exatamente o que voce precisa.

6
Topicos
40
Minutos
Pratico
Nivel
Core
Tipo
1

📂 Glob: Busca por Padrao de Arquivo

Glob encontra arquivos baseado em padroes de nome. E como um "find" ultra-rapido, otimizado para qualquer tamanho de codebase.

📋 Parametros do Glob

Parametro Tipo Descricao
pattern string Padrao glob (ex: "**/*.js")
path string Diretorio inicial (default: cwd)

Padroes Glob Comuns

**/*.js

Todos JS em subpastas

src/**/*.{ts,tsx}

TS e TSX em src/

*.config.*

Arquivos de config

tests/**/test_*.py

Testes Python

💡 Dica

Resultados sao ordenados por data de modificacao - arquivos mais recentes primeiro. Isso e util para encontrar arquivos recem-editados.

2

🔎 Grep: Busca por Conteudo

Grep busca texto dentro de arquivos usando regex. Construido sobre ripgrep (rg), e extremamente rapido mesmo em projetos enormes.

📋 Principais Parametros do Grep

Parametro Descricao
pattern Regex a buscar
path Diretorio ou arquivo
output_mode content | files_with_matches | count
glob Filtrar por padrao de arquivo
type Tipo de arquivo (js, py, rust...)
-i Case insensitive

Exemplos de Uso

# Buscar funcao em todo projeto

Grep(pattern="def calcular_", path="/projeto")

# Buscar apenas em arquivos Python

Grep(pattern="import pandas", type="py")

# Ver conteudo com contexto

Grep(pattern="TODO", output_mode="content", -C=3)

3

📊 Modos de Saida do Grep

O parametro output_mode controla o que Grep retorna. Escolha baseado no que voce precisa saber.

📄

files_with_matches

Apenas nomes dos arquivos (default)

/projeto/src/main.py
/projeto/lib/utils.py
📝

content

Linhas que fazem match

main.py:10: def calcular()
utils.py:25: def calcular_total()
🔢

count

Contagem por arquivo

main.py: 5
utils.py: 12

📐 Contexto com -A, -B, -C

Quando usando output_mode: "content", voce pode adicionar linhas de contexto:

  • -A=N - N linhas depois (After)
  • -B=N - N linhas antes (Before)
  • -C=N - N linhas antes E depois (Context)
4

🎯 Regex Essencial para Grep

Grep usa sintaxe ripgrep (similar a Perl/PCRE). Alguns padroes uteis para buscas de codigo.

Padroes Uteis

function\s+\w+ Declaracoes de funcao JS
def\s+\w+\( Funcoes Python
class\s+[A-Z]\w+ Classes (CamelCase)
TODO|FIXME|HACK Comentarios de tarefas
import.*from Imports ES6

⚠️ Cuidado com Caracteres Especiais

Para buscar literalmente {} ou outros caracteres especiais de regex, escape com \: interface\{\}

5

🔄 Glob + Grep: Workflow Combinado

Combine Glob e Grep para navegacao eficiente: Glob encontra arquivos, Grep encontra conteudo.

1

Descobrir estrutura

Glob(pattern="**/*.py", path="/projeto")

Encontra todos os arquivos Python

2

Localizar funcao especifica

Grep(pattern="def process_data", type="py")

Encontra onde a funcao esta definida

3

Ler contexto

Read(file_path="/projeto/src/processing.py", offset=45, limit=30)

Le apenas o trecho relevante

💡 Economia de Contexto

Este workflow usa minimo contexto: Glob e Grep retornam apenas metadados, e Read le apenas o trecho necessario. Muito mais eficiente que ler arquivos inteiros.

6

⚡ Otimizacao e Limites

Para codebases grandes, use os parametros de otimizacao para limitar resultados e acelerar buscas.

Parametros de Limite

  • head_limit - Limita primeiros N resultados
  • offset - Pula primeiros N resultados
  • type - Filtra por tipo de arquivo
  • glob - Filtra por padrao de nome

Exemplo Otimizado

Grep( pattern="async function", path="/projeto/src", type="ts", output_mode="files_with_matches", head_limit=10 )

Retorna max 10 arquivos TS com funcoes async

📊 Multiline Mode

Para padroes que cruzam linhas, use multiline: true:

Grep( pattern="struct \\{[\\s\\S]*?field", multiline=true )

📋 Resumo do Modulo

Glob busca arquivos - por padrao de nome, ordenados por data
Grep busca conteudo - regex em arquivos, baseado em ripgrep
Tres modos de saida - files_with_matches, content, count
Combine Glob + Grep + Read - para navegacao eficiente
Use limites - head_limit, type, glob para otimizar

Proximo Modulo:

2.4 - Bash: Execucao de Comandos do Sistema - rode qualquer comando no terminal