grep com recursão limitada quando existe um arquivo de redirecionamento

0

Gostaria de pesquisar uma palavra em todos os arquivos em um diretório de forma recursiva e exibir as linhas de ocorrência em um arquivo de saída no diretório.

grep -ri "my_str" ./ >> opt_file.txt

No entanto, como "my_str" também aparece em opt_file.txt, a ocorrência em opt_file.txt também é listada recursivamente no arquivo redirecionado e, portanto, forma um loop infinito. Existe alguma maneira simples de resolver este problema?

    
por user3813057 05.08.2015 / 19:39

1 resposta

0

Em man grep :

--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.

Portanto:

grep -ri "my_str" ./ >> opt_file.txt --exclude=opt_file.txt

Embora eu apenas mantenha o arquivo em outro lugar para evitar complicações em que um arquivo semelhante também existe em um subdiretório:

grep -ri "my_str" ./ >> ../opt_file.txt
grep -ri "my_str" ./ >> /tmp/opt_file.txt
    
por muru 05.08.2015 / 19:42