Como você procura texto específico em tipos de arquivo específicos? [duplicado]


13

Possível duplicado:
Como posso grep nos arquivos de origem para algum texto?

Qual é o comando para procurar texto específico em tipos de arquivos específicos, recursivamente, no diretório atual?


O que você quer devolver? a linha em que o texto está? o nome do arquivo em que o texto está?
precisa saber é o seguinte

@MaQleod: Isso seria bom (nome do arquivo + número da roupa + trecho), se isso for possível.
Phillip

@slhck: o ack-grep não está instalado; Não tenho permissões para instalá-lo.
Phillip

1
Você não precisaria ack-grep, você pode usar os exemplos da pergunta como iniciado (como eu disse), ou seja, as find | xargs | greplinhas. Para a saída específica, man grepé sempre útil ler.
slhck

@ slhck: Obrigado, eu fiz grep -r --include=*.<type> "<string>" ., o que funcionou. Infelizmente, a página de manual não é muito direta ao mencionar o ponto final.
Phillip

Respostas:


11
find . -type f -name '*.extension' | xargs grep "string"

Este comando executa find no diretório local (.) Para quaisquer arquivos com nomes que correspondam ao padrão * .extension, depois executa grep para "string" nos resultados da localização . Observe que a localização é inerentemente recursiva. Contanto que você possa diferenciar os arquivos desejados dos que não são baseados no nome, isso funcionará para você.


2
Isso quebra com nomes de arquivos que contêm espaços; você deve usar a print0opção para ser mais seguro.
slhck

find -print0não vai ajudar, também use xargs -0:find . -type f -name "*.ext" -print0 | xargs -0 grep "string"
BurninLeo

0

Para listar o nome do arquivo, o número da linha no arquivo especificado e a linha que o texto aparece:

for x in *.xxx; do [ -r $x ] | cat $x | grep -n TEXT | xargs printf "$x:%s\n";done

Ele será executado apenas no diretório atual, mas o formatará muito bem para você.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.