Localizar arquivo contendo texto especificado no Linux
Dica publicada em Linux / Miscelânea
Localizar arquivo contendo texto especificado no Linux
Certa vez, após instalar o GLPI (sistema de helpdesk), houve a necessidade de customizá-lo para ficar de acordo com as necessidades da empresa. O grande problema era saber em qual arquivo encontrar o conteúdo que deveria ser alterado.
Segue abaixo um exemplo de como efetuar a busca:
grep -R manaus /home/smith/ 2>/dev/null | cut -d: -f2 | uniq
Vamos dissecar o comando:
:wq!
Andrey Smith
Segue abaixo um exemplo de como efetuar a busca:
grep -R manaus /home/smith/ 2>/dev/null | cut -d: -f2 | uniq
Vamos dissecar o comando:
- grep -R manaus /home/smith/ - procura recursivamente pela palavra "manaus" em todos arquivos a partir do diretório /home/smith;
- 2>/dev/null - direciona as linhas de erro para /dev/null;
- | (pipe) - redireciona a saída do comando anterior (grep -R manaus /home/smith/ 2>/dev/null), para a entrada do próximo comando;
- cut -d: -f2 - o grep gera um arquivo no seguinte formato:
/path/arquivo:conteúdo da linha
Como queremos saber apenas qual arquivo contém a palavra "manaus", utilizaremos o comando cut para tratar a saída. O cut lê a saída do comando anterior e seleciona apenas o segundo campo (-f2), separado pelo delimitar (-d) "dois pontos" (":"), ignorando tudo que estiver depois do delimitador. - uniq - caso haja mais de uma ocorrência da palavra "manaus" em um mesmo arquivo, será exibida uma linha para cada ocorrência. O uniq remove as linhas duplicadas.
:wq!
Andrey Smith