Comando Grep - Pesquisar strings ou palavras dentro de arquivos.

Iniciado por Visterine, 12 de Junho de 2020, 16:19

tópico anterior - próximo tópico

Visterine

Como posso melhorar essa linha de comando com o Grep para buscar dentro dos arquivos, strings e palavras especificas, pesquisando apenas em arquivos txt ou doc?

grep -Ri "palavrapesquisada" /home/ >  resultado.txt

Com esse comando já consigo fazer a pesquisa com o retorno para consulta dentro do arquivo resultado.txt.
Porém está pesquisando em todos os arquivos, demorando uma eternidade, e preciso que pesquise dentro de arquivos específicos txt ou doc.

Já tentei com outras combinações:
grep -Ri "palavrapesquisada" /home/ 2>/dev/null | cut -d: -f2 | uniq
e
dir="/home"; kw="palavrapesquisada"; find $dir -name $kw*; grep -iR $kw $dir | grep -v "\/\./*";

Mas todas estão pesquisando em todos os arquivos.
Tem como especificar os arquivos de pesquisa?

Grato pela atenção.
Linux Mint 17.2 Cinnamon AMD Athlon II X4 2.8Ghz Ram 8Gb NVidia GeForce GT 610
Ubuntu 14.04 / Linux Mint 17.2 XFCE Intel Core 2 Duo 3Ghz Ram 4Gb

FaBMak

O segundo argumento do grep, permite restringir os arquivos por tipo.

grep -Ri "palavrapesquisada" /home/*/*.txt /home/*/*.doc >  resultado.txt

Embora, acho que não funcione corretamente, para arquivos doc, pois o formato é binário.
"Não creias impossível o que apenas improvável parece". (Shakespeare)
fabmak://website

zekkerj

Minha sugestão...

fgrep -i "palavra ou texto" `find /home -name \*.txt -o -name \*.doc`

Quanto à busca em arquivos ".doc"... sim, são binários, mas, digamos assim, que a busca vai funcionar --- desde que não se busque coisas muito complexas, como frases longas ou palavras acentuadas.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D