>_ josetilabs.com
← blog

28 out 2026 · linux, grep, ripgrep, terminal · 4 min

Quando vale trocar grep por ripgrep?

Vale trocar quando você busca em árvores grandes de código ou texto e quer desempenho, respeito a .gitignore e filtros por tipo sem montar pipeline. Em 20 mil arquivos de 2 KB, ripgrep terminou em 0,11 s contra 0,18 s do grep -r, e não listou o arquivo binário que continha o termo. grep continua certo para scripts portáveis e para máquinas onde você não pode instalar nada.

ripgrep é recursivo por padrão, respeita .gitignore quando está num repositório git, ignora arquivos binários e tem filtros por tipo (-t). grep faz o mesmo com flags: -r, –include, -I. A diferença é o padrão: rg já vem com o comportamento que você monta na mão no grep.

Comandos equivalentes

O que você quer grep ripgrep
buscar recursivo grep -r “termo” . rg “termo”
só arquivos .py grep -r –include=’*.py’ “termo” . rg -t py “termo”
ignorar binários grep -I padrão do rg
listar arquivos com o termo grep -rl “termo” . rg -l “termo”
contar por arquivo grep -c “termo” arquivo rg -c “termo”
case-insensitive grep -i rg -i
regex estendida grep -E padrão do rg

Medição na nossa máquina

Geramos 20.000 arquivos de texto de cerca de 2 KB, com o termo ABC-123 em 7.764 deles, mais um arquivo binário de 1 MB que também contém o termo. Rodamos uma vez cada, depois de aquecer o cache de página.

Comando Tempo Arquivos com o termo Binário listado?
grep -r “ABC-123” . 0,18 s 7.765 sim
rg “ABC-123” . 0,11 s 7.764 não

Os dois acharam os mesmos 7.764 arquivos de texto. O grep listou o binário porque, por padrão, ele só imprime “Binary file matches” a menos que você use -I. O rg pulou o binário sozinho. A diferença de 0,07 s não justifica trocar por si só; o ganho aparece em árvores maiores e em repetição, quando o paralelismo e o cache do rg compensam.

Terminal mostrando grep contando 43 arquivos e rg contando 42 no mesmo conjunto de 200 arquivos
Saída real do artefato rg-vs-grep.sh.
Gráfico de barras: grep -r em 0,18 s e rg em 0,11 s para buscar ABC-123 em 20000 arquivos
Tempo de busca do grep contra o do ripgrep em 20.000 arquivos de 2 KB.

Artefato: teste lado a lado

O script abaixo cria 200 arquivos, coloca o termo em 42 deles e cria um binário com o termo. Depois roda grep e, se ripgrep estiver instalado, rg. No final limpa o diretório temporário.

bash
#!/usr/bin/env bash
set -euo pipefail

D="${TMPDIR:-/tmp}/rg-vs-grep-$$"
mkdir -p "$D"
trap 'rm -rf "$D"' EXIT

for i in $(seq 1 200); do
  printf 'linha %d: nada aqui\n' "$i" > "$D/f$i.txt"
done
for i in $(seq 1 42); do
  printf 'achado ABC-123 no arquivo %d\n' "$i" >> "$D/f$i.txt"
done
printf 'ABC-123\n' > "$D/blob.bin"

echo "== grep =="
grep -rl "ABC-123" "$D" | wc -l

echo "== ripgrep (se instalado) =="
if command -v rg >/dev/null 2>&1; then
  rg -l "ABC-123" "$D" | wc -l
else
  echo "rg nao instalado neste ambiente"
fi

Salve como rg-vs-grep.sh e rode com bash rg-vs-grep.sh.

Como verificar

O grep deve contar 43 (42 arquivos de texto mais o binário). Se ripgrep estiver instalado, ele deve contar 42, porque pula o binário. Se a contagem do rg for 43, ele está rodando com filtros desligados (-uuu) ou o binário parece texto.

Se der errado

Quando escolher qual

Situação Escolha
script que roda em qualquer Linux grep
busca diária em repositório git rg
árvore com node_modules, .git, binários rg
máquina sem instalação grep
precisa substituir texto nenhum dos dois (use sed ou sd)

Se a busca vira rotina, vale combinar com outras ferramentas: Como consultar JSON no terminal com jq, Como deixar o terminal do Linux bonito e útil e Disco cheio: como achar o que está ocupando.

FAQ

ripgrep é sempre mais rápido? Em arquivo único pequeno a diferença é irrelevante. O ganho é em árvores grandes e buscas repetidas.

posso usar rg em scripts de CI? Sim, mas fixe a versão. grep é mais previsível em imagens mínimas.

rg substitui sed? Não. Ele busca. Para substituir, use sed ou sd.

como buscar arquivo oculto? rg --hidden.

como desligar todos os filtros? rg -uuu.

Fontes

Leia também

// Por e-mail

Os textos publicados aqui também vão por e-mail. O envio ainda não começou: quem deixar o endereço agora entra na primeira lista.

Guardo só o seu e-mail, a data e o registro desta autorização. Sem cookies, sem rastreador e nada compartilhado com terceiros. Detalhes na política de privacidade.