Neste novo post iremos novamente abordar de forma mais direta o comando grep do linux, já temos em nossa base de conhecimento um post bem completo com diversos exemplos e explicações, se você ainda não viu basta acessar >>aqui<< . Podemos usar o grep no terminal para fazer buscas por linhas em arquivos de texto que atendam a uma determinada expressão de procura.
O grep pode ser utilizado em conjunto com o operador pipe “|” expandindo o poder desse comando, usando inclusive para procurar por nomes de arquivos em pastas e se adicionarmos “-R” podemos procurar em sub-pastas, ou seja, uma busca recursiva.
Sintaxe básica de comando grep
[root@server ~]#grep [parametros] expressao_procura [arquivo]
|
Obsevação: Todos os exemplos mostrados aqui são baseados em um caminho padrão para servidores com painel cPanel. Lembre-se que trata-se apenas de um caminho exemplo, se a sua pesquisa for feita em diretório corrente não é necessário informar esse caminho.
Pesquisar por nome de arquivo
Pesquisa simples, utilizando a saída do comando ls para o diretório /home/user_cpanel/public_html/ e procurando pelo arquivo com nome “site” somente dentro da pasta “public_html”.
[root@server ~]#ls /home/user_cpanel/public_html/ | grep site
|
Agora vamos fazer a mesma pesquisa recursivamente adicionando “-R” ao comando, ou seja, procurando pelo nome de arquivo com a palavra “site” dentro da pasta public_html e suas sub-pastas.
[root@server ~]#ls /home/user_cpanel/public_html/ | grep –R site
|
Pesquisar palavra dentro de arquivos
Pesquisando pela palavra “conexao” dentro do arquivo conexao.class.php, para pesquisas com apenas um termo utilizar aspas ” como delimitadores da expressão, dois termos ou mais utilizar apóstrofo ‘.
[root@server ~]#grep “conexao” /home/user_cpanel/public_html/site/classes/conexao.class.php
|
Agora a mesma pesquisa recursivamente usando “-R”, procurando dentro da pasta site e suas sub-pastas.
[root@server ~]#grep –R “conexao” /home/user_cpanel/public_html/site/
|
Podemos pesquisar somente os arquivos que estão dentro do diretório “site”, basta adicionarmos um asterisco “*” ao final do comando (sub-pastas apenas terão seus nomes listados).
[root@server ~]#grep “conexao” /home/user_cpanel/public_html/site/*
|
Abaixo alguns parâmetros para personalizar as saídas do comando grep:
- -a, –text: trata arquivos binários como se fossem arquivos de texto.
- -c: imprime somente a contagem das linhas com expressão.
- -i: ignora a diferença entre letras maiúsculas e letras minúsculas.
- -I: exibe o nome do arquivo ao invés da saída normal do comando grep.
- -n: mostra o número de cada linha em arquivo com expressão.
- -s, –no–messages: não exibe mensagens de erro.
- -v: mostra todas as linhas de arquivo, exceto as linhas com expressão.
Esperamos que esse post ajude e traga mais conhecimento sobre o imenso universo Linux.