Bash - existe uma maneira de procurar uma string (ou padrão) em seu diretório atual? [duplicado]

1

Digamos que eu esteja em um determinado diretório que contém vários arquivos e estou tentando procurar os arquivos que contêm a string "string" dentro do conteúdo deles . Existe uma maneira de fazer isso? Obrigado.

    
por Kaitlyn Mcmordie 07.01.2012 / 19:44

2 respostas

5

Resposta simples:

grep -l string *

Listará todos os arquivos em seu diretório atual que contenham a string string .

E se você quiser procurar uma string em todos os arquivos no diretório atual e em quaisquer subdiretórios, use:

grep -rl string .

Detalhes:
* irá corresponder a tudo na sua pasta atual, exceto arquivos que começam com., teoricamente, ele também corresponderá aos diretórios, embora geralmente isso não importe muito. Se você quer ser muito exigente, você pode usar encontrar assim:

find . -type f -maxdepth 1 -exec grep -i string {} /dev/null \;

Se você quiser ver a pasta e as subpastas atuais, deixe -maxdepth 1 como:

find . -type f -exec grep -i string {} /dev/null \;

{} significa que o nome do arquivo corresponde, mas para listar o NOME do arquivo também você precisa adicionar pelo menos dois nomes de arquivos, e mencionar / dev / null faz o truque. Você pode modificar isso como quiser para o resultado desejado. Deve dar-lhe uma base para trabalhar. :)

    
por 07.01.2012 / 20:04
1

Aqui estão algumas maneiras de fazer isso no diretório atual e em todos os seus subdiretórios.

Se você quiser nomes de arquivos onde o texto pode ser encontrado:

find . -type f -exec grep -l 'string' {} \; 

Se você quiser ver apenas as linhas em que o texto foi encontrado:

find . -type f -exec grep 'string' {} \; 

Se você deseja ver os nomes dos arquivos sendo pesquisados e o conteúdo das linhas quando algo for encontrado:

find . -type f -print -exec grep 'string' {} \;

Claro, isso pode ser combinado ainda mais ...

    
por 07.01.2012 / 19:58

Tags