Encontrando aquivos com conteúdo específico no Linux (007)

De Wiki.bireme.org/pt
Ir para: navegação, pesquisa

Encontrando aquivos com conteúdo específico no Linux [007] - publicação: 20/julho/2012

Olá, esta é a mais uma mensagem "Dicas & Truques", contribuição de Chico Lopes, sendo direcionada a informáticos, seu conteúdo é de nível médio e tecnológico.


Público alvo: informáticos
Nível: MÉDIO
Conteúdo: tecnológico
Objetivo: Localizar arquivos com conteúdo específico

Suponha que você precisa mudar algo em todas as tabelas que estão nas páginas do site da instituição. Deve haver muitas páginas e você tem de encontrar as que tem tabelas dentro.


Nessa hora a ferramenta grep dos sistemas Linux (ou UNIX) vem em nosso auxílio, veja...


Por exemplo, estamos no diretório /home/site1/public_html, daqui para baixo temos os arquivos htm e html das páginas. Com o comando grep --color -nir "<table" *.htm* vamos obter uma listagem dos arquivos que contém a sequencia de caracteres '<table', em maiúsculas ou minúsculas, indiferentemente, e de quebra em qual linha está ocorrendo a string, como abaixo:

$ grep --color -nir "<table" *.htm*
atd2CV-Unifesp.htm:9:   <table border="0" align="xcenter" cellspacing="0" cellpadding="0"
atd2CV-Unifesp.htm:67:              <table align="left" border="0"
atd2CV-Unifesp.htm:263:<table border="0"
atd2CV-Unifesp.htm:487:        <table border="0" align="left"
atd2.htm:9:  <table border="0" align="xcenter" cellspacing="0" cellpadding="0"
atd2.htm:68:              <table align="left" border="0"
atd2.htm:320:<taBle border="0"
atd2.htm:544:        <table border="0" align="left"
atma.htm:8:  <table border="0" align="xcenter" cellspacing="0" cellpadding="0"
atma.htm:66:              <table align="left" border="0"
atma.htm:545:        <table border="0" align="left"
base.html:4:      <table border=1
$

Olhando mais de perto podemos ver o efeito do parâmetro --color (que é opcional) que faz o nome do arquivo aparecer em uma cor, o numero da linha em outra e por fim o texto procurado em outra cor, deixando o restante na cor padrão do terminal.

atd2.htm:320:<taBle border="0"


As opções demais opções utilizadas tem as seguintes funções:

n Mostra o número da linha onde ocorre a string
i ignora letras maiúsculas / minúsculas
r recorre aos subdiretórios na execução da busca


É possivel obter mais informações sobre o comando e as opções com a opção --help (grep --help), ou em seu manual online (man 1 grep), se instalado.

Imagine querer trocar o nome de uma base de dados em todos os .def que ela apareça e ter de editar def por def para saber em quais tem de fazer ou não alterações. É o grep que vai te ajudar bastante nessa hora, principalmente, porque ele funciona, exatamente, desta forma em quase todas as distribuições.

Obs.: Se você utiliza Windows, fique tranquilo, existem programas equivalentes para linha de comando ou interface gráfica, basta procurar na Internet "grep para Windows" e muitas alternativas te serão apresentadas.

Até a próxima!


sumário