Grep em todo o servidor no Ubuntu

3

Eu preciso usar o recurso do grep em todo o servidor.

Eu tentei o seguinte:

grep -r 'MyString' / 
grep -r 'MyString' /*

No entanto, nada disso parece funcionar. Alguma sugestão?

    
por seedg 05.01.2010 / 16:42

6 respostas

1
sudo find / -type f -print0 |xargs -0 grep -l 'MyString'
    
por 05.01.2010 / 16:44
5
sudo find / -type f -exec grep "Strring" {} \;

Você tem certeza que quer fazer isso? Isto irá percorrer todos os sistemas de arquivos (locais ou não) e pode muito bem maximizar a CPU em seu servidor.

    
por 05.01.2010 / 16:45
0
cd /
find . | xargs grep MyString

Se você está procurando tipos de arquivos específicos:

find . -name *.java | xargs grep Integer
    
por 05.01.2010 / 16:44
0

Eu não entendo a abordagem.

Mas se você não for root, receberá um monte de permissões negadas, redirecionando-as para / dev / null. Então você vai conseguir o que quer de volta.

 find . / 2>/dev/null | xargs grep MyString 2>/dev/null
    
por 05.01.2010 / 17:07
0
cd /
grep -R 'your string' *
    
por 05.01.2010 / 18:56
0

Instale o ack , que é empacotado como ack-grep nos repositórios do Ubuntu. É como uma combinação supercharged de find e grep que faz exatamente o que você quer sem mexer com combinações de comandos.

$ sudo ack-grep -a 'MyString' /

A opção -a é usada para substituir o comportamento padrão de filtragem de ack, o que limita a pesquisa a tipos de arquivos que ele conhece. Ele ainda excluirá certos arquivos e diretórios, como arquivos de backup que terminam em "~" ou diretórios de controle de origem, como ".svn". Você pode substituir esse comportamento para pesquisar absolutamente tudo usando a opção -u .

Para limitar a pesquisa a determinados tipos de arquivos:

$ sudo ack-grep -aG '.*txt' MyString

observando que o argumento para -G é um regex, não um glob.

Ou para tipos de arquivos que o ack já conhece, como arquivos C ++:

$ ack-grep --cpp 'SomeFunctionName'
    
por 10.07.2011 / 09:01

Tags