grep --exclude não exclui meu arquivo

7

Estou pesquisando um diretório para uma string específica (para ver todas as instâncias de onde a string está presente e em quais arquivos). No entanto, desejo excluir um arquivo específico da pesquisa.

Veja o que está acontecendo -

$echo "searchstring" > ./old_folder/useless_file
$echo "searchstring" > ./new_folder/good_file
$grep -r --exclude="old_folder/useless_file" searchstring *
./old_folder/useless_file:searchstring
./new_folder/good_file:searchstring

Aqui está a saída que eu quero -

./new_folder/good_file:searchstring
    
por sbhatla 30.03.2016 / 17:48

1 resposta

11

A opção --exclude usa globs que são comparados com nomes de arquivos, não diretórios ou caminhos completos:

  --exclude=GLOB
          Skip   files  whose  base  name  matches  GLOB  (using  wildcard
          matching).  A file-name  glob  can  use  *,  ?,  and  [...]   as
          wildcards,  and  \  to  quote  a wildcard or backslash character
          literally.

Então, você poderia fazer:

$ grep -r --exclude="*useless_file*" searchstring 
new_folder/good_file:searchstring

Ou para excluir todos os arquivos desse diretório:

$ grep -r --exclude-dir="old_folder" searchstring 
new_folder/good_file:searchstring
    
por 30.03.2016 / 17:52

Tags