Comando grep: como buscar texto em arquivos na VPS
Aprenda o comando grep na VPS: a sintaxe, as opções do dia a dia, a busca em pastas, o contexto das linhas, o grep com pipe em logs e processos e os códigos de saída.
Por Redação Eleven Host · @robson.direitodigital · 30 de outubro de 2026 · 8 min de leitura

Capa da Redação Eleven Host para o guia: Comando grep: como buscar texto em arquivos na VPS Arte: Eleven Host
O comando grep procura um texto dentro de arquivos e mostra as linhas que combinam com ele. A forma mais simples é grep "texto" arquivo. Este guia mostra a sintaxe, as opções do dia a dia, a busca em pastas e o grep com pipe.
Como o grep funciona
Quem administra uma VPS por SSH pode precisar achar uma mensagem num log ou uma configuração num arquivo. É para isso que o grep serve. Segundo a página de manual, a forma geral é grep [OPÇÃO]... PADRÕES [ARQUIVO]...: você escreve as opções, o padrão que quer achar e os arquivos onde procurar. Um exemplo, com um nome de arquivo fictício:
grep "erro" arquivo.log
O comando imprime cada linha de arquivo.log que contém a palavra erro. Linhas que não combinam ficam de fora.
Se você não indicar arquivo, o comportamento depende do tipo de busca. A página de manual diz que a busca recursiva olha a pasta atual e que a busca não recursiva lê a entrada padrão, que é o que chega por um pipe. Essa segunda parte aparece mais adiante, no grep com pipe.
O grep mostra linhas inteiras. Para ver só o pedaço que combinou, existe a opção -o.
Opções do dia a dia: -i, -n, -v, -w e -c
As opções vão antes do padrão e mudam o que o grep procura ou o que ele mostra. Estas são as que mais aparecem nos exemplos deste guia:
-i: ignora diferença entre maiúsculas e minúsculas, tanto no padrão quanto no texto.-n: escreve o número da linha antes de cada resultado, começando em 1.-v: inverte a busca e mostra as linhas que NÃO combinam.-w: aceita só linhas em que o texto aparece como palavra inteira.-c: em vez das linhas, mostra quantas linhas combinam, por arquivo.-l: mostra só o nome dos arquivos que têm o texto. O-Lfaz o contrário e mostra os arquivos que não têm.
Veja cada uma em um exemplo. Os caminhos e os textos são fictícios:
grep -i "warning" /var/log/syslog
grep -v "^#" /etc/ssh/sshd_config
grep -w "root" /etc/passwd
grep -c "404" access.log
O primeiro acha warning em maiúsculas, minúsculas ou misturadas. O segundo mostra as linhas do arquivo de configuração do SSH que não combinam com ^#. O terceiro procura root como palavra inteira. O quarto conta quantas linhas de access.log têm 404.
Mais algumas opções
-o: mostra só o pedaço que combinou, um por linha.-q: não escreve nada na tela. Serve para quando só interessa o código de saída, explicado mais abaixo.-s: esconde as mensagens de erro sobre arquivo inexistente ou sem permissão de leitura.-He-h: mostram ou escondem o nome do arquivo em cada resultado.-e PADRÃO: pode ser repetida para buscar vários padrões. Também protege um padrão que começa com hífen.-F: trata o padrão como texto fixo, e não como expressão regular.
Para destacar o texto encontrado, use --color. Ela aceita never, always ou auto, e as cores vêm da variável GREP_COLORS:
grep --color=auto "GET" access.log
Buscar em pastas: -r, -R e --include
Com a opção -r, o grep lê todos os arquivos da pasta indicada e das pastas dentro dela. A -R faz a mesma busca, mas segue todos os links simbólicos. Com a -r, só os links simbólicos passados na linha de comando são seguidos. Por isso as duas opções não são sinônimos.
Um exemplo é procurar onde um nome de configuração aparece num site, mostrando também o número da linha:
grep -rn "DB_PASSWORD" /var/www/site
Dá para limitar a busca a certos arquivos. A opção --include=GLOB procura só nos arquivos cujo nome combina com o padrão, como *.php. Já --exclude=GLOB pula arquivos, e --exclude-dir=GLOB pula pastas. Se um --include e um --exclude se contradisserem, vale o último que combina. Juntando com o -l, o comando abaixo lista só os arquivos .php que têm o texto:
grep -rl --include="*.php" "eval(" /var/www/site
Para trocar permissões de arquivos achados desse jeito, o guia chmod: como mudar permissões de arquivos na VPS explica o comando chmod e seus modos.
Está escolhendo uma VPS? O Plano Bronze da VPS sai a partir de R$ 17,00/mês; confira na loja o que cada plano inclui. Ver planos de VPS
Ver o contexto: -A, -B e -C
Às vezes a linha que combinou não mostra o suficiente, e é preciso ver o que veio antes ou depois dela. Para isso existem três opções, que recebem um número de linhas:
-A NUM: mostra NUM linhas depois de cada resultado.-B NUM: mostra NUM linhas antes.-C NUM: mostra NUM linhas antes e depois.
grep -C 3 "Fatal error" error.log
No exemplo, cada ocorrência de Fatal error aparece com três linhas antes e três depois.
grep com pipe: logs e processos
O pipe, o símbolo |, manda a saída de um comando para a entrada de outro. Como o grep sem arquivo lê a entrada padrão, ele pode filtrar a saída de outro comando. Um caso é o de logs de um serviço do systemd. O guia journalctl: como ver os logs do sistema na VPS explica o journalctl, e a saída dele pode passar pelo grep:
journalctl -u nginx --since "1 hour ago" --no-pager | grep -i error
O -u escolhe a unidade do serviço, o --since filtra por data e o --no-pager evita o paginador. O nginx é só um exemplo de serviço. O próprio journalctl também filtra a mensagem com -g ou --grep, que usa expressão regular. Segundo a página de manual, se o padrão estiver todo em minúsculas, a busca ignora maiúsculas e minúsculas:
journalctl -u nginx -g "error"
Procurar um processo
O comando ps lista processos. A página de manual descreve ps ax e ps axu na sintaxe BSD, e o u pede um formato orientado ao usuário. Com o grep, dá para achar a linha de um programa:
ps aux | grep nginx
Para olhar o uso de memória da VPS, o guia Ver uso de memória no Linux: free, top e htop na VPS mostra outros comandos para isso.
Expressões regulares básicas com -E
Com a opção -E, o grep usa expressões regulares estendidas. Um uso é buscar várias palavras de uma vez, separadas por |:
grep -E "erro|falha|timeout" app.log
Esse comando mostra as linhas de app.log que tenham erro, falha ou timeout. Também dá para repetir a opção -e, uma para cada padrão. Já o -F trata o padrão como texto fixo, e não como expressão regular.
Sobre nomes antigos: egrep, fgrep e rgrep equivalem a grep -E, grep -F e grep -r. A página de manual diz que essas variantes estão obsoletas no projeto original e que o Debian as mantém por compatibilidade. A recomendação é usar o grep com a opção.
Códigos de saída do grep
Em scripts, o que importa às vezes não é a linha, e sim se o texto foi achado. Segundo a página de manual, o código de saída normal é 0 se alguma linha foi selecionada, 1 se nenhuma foi e 2 se ocorreu um erro. Com a opção -q, se o grep achar algo, ele sai com 0 mesmo que tenha havido erro.
Dá para usar isso com o && do shell:
grep -q "pronto" status.txt && echo "achou"
Se status.txt tiver a palavra pronto, o comando escreve achou. Se não tiver, não escreve nada.
Comandos para guardar
grep "texto" arquivo: mostra as linhas que têm o texto.grep -i: ignora maiúsculas e minúsculas.grep -n: mostra o número da linha.grep -v: mostra as linhas que não combinam.grep -w: só palavra inteira.grep -c: conta as linhas.grep -rl --include="*.php" "texto" pasta: lista os arquivos de uma pasta que têm o texto.grep -C 3 "texto" arquivo: mostra três linhas antes e depois.grep -E "a|b|c" arquivo: busca uma das alternativas.comando | grep -i texto: filtra a saída de outro comando.grep -q: usa só o código de saída: 0 achou, 1 não achou, 2 erro.
Quer conhecer a VPS da Eleven Host? O Plano Bronze da VPS sai a partir de R$ 17,00/mês; confira na loja o que cada plano inclui. Conhecer a VPS
Perguntas frequentes
Para que serve o comando grep?
Procura um texto dentro de arquivos e mostra as linhas que combinam. Sem arquivo, a busca não recursiva lê a entrada padrão, o que permite filtrar a saída de outros comandos por pipe.
Como o grep ignora maiúsculas e minúsculas?
Com a opção -i, que ignora a diferença no padrão e no texto.
Como buscar em todos os arquivos de uma pasta?
Use -r, como em grep -rn "texto" /var/www/site. Para limitar a certos arquivos, acrescente --include="*.php".
Como ver as linhas antes e depois do resultado?
Use -B para as anteriores, -A para as seguintes ou -C para as duas, cada uma com o número de linhas.
O que significa o código de saída 1 do grep?
Que nenhuma linha foi selecionada. O 0 indica que alguma linha combinou, e o 2 indica erro.