grep não exclui o diretório, trava

1

Estou procurando arquivos no meu servidor contendo a string de texto "sometext" , mas desejo excluir a pesquisa na pasta /var/www/sometext (e suas subpastas).

Então eu fiz o seguinte:

grep -rl "sometext" / --exclude-dir=/var/www/sometext

No entanto, houve dois problemas:

  1. Os resultados ainda continham arquivos da pasta que eu queria excluir e

  2. grep eventualmente trava (imagem abaixo)

Minhas perguntas:

  1. Por que grep retornará arquivos de dentro da pasta que eu quero excluir?

  2. Por que grep travaria, e também, depois que ele for interrompido, como obteria o prompt novamente?

  3. Pergunta bônus: como adicionar um asterisco à direita na especificação da pasta excluída altera os resultados --exclude-dir=/var/www/sometext* ?

por thanks_in_advance 28.06.2016 / 08:04

1 resposta

2

As perguntas 1 e 3 estão relacionadas e podem ser respondidas de cada vez. De acordo com a página grep man (ênfase minha):

--exclude-dir=DIR

Exclude directories matching the pattern DIR from recursive searches.

Então, basicamente, o que você especifica com essa opção é um padrão e não um diretório em si, significando que /var/www/sometext* ou mesmo /var/www/sometext/* expandirá e corresponderá a qualquer arquivo / subdiretório do especificado (o O segundo é ainda mais preciso, já que o primeiro pode corresponder a outros diretórios cujo nome começa com sometext .

A pergunta 2 pode ser explicada porque você provavelmente está com grep ping dentro do diretório /dev , que contém todos os dispositivos do sistema e, particularmente, alguns deles são considerados "infinitos", como, por exemplo, /dev/zero , então o comando nunca terminará. É uma boa ideia usar --exclude-dir para corresponder a todos os diretórios especiais, como /dev , /sys e assim por diante.

    
por 28.06.2016 / 08:13