grep --exclude non esclude il mio file


8

Sto cercando una directory per una stringa particolare (per vedere tutte le istanze di dove la stringa è presente e in quali file). Tuttavia, voglio escludere un determinato file dalla ricerca.

Ecco cosa sta succedendo

$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

Ecco l'output che voglio-

./new_folder/good_file:searchstring

6
Se passi --exclude="old_folder/useless_file"a semplicemente --exclude=useless_filehai lo stesso problema? (La mia lettura della pagina man suggerisce che lo schema --excludedovrebbe essere solo il nome di base, escluso il percorso.)
Wildcard

Risposte:


11

L' --excludeopzione accetta globs abbinati a nomi di file, non directory o percorsi completi:

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

Quindi, potresti fare:

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

Oppure, per escludere tutti i file in quella directory:

$ grep -r --exclude-dir="old_folder" searchstring 
new_folder/good_file:searchstring
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.