I am trying to find files containing a specific word using grep. There are many files in the directory (> 500)Command I run$ grep 'delete' *Outputvalidate_data_stage1:0validate_data_stage2:0validate_data_stage3:0validate_data_stage4:0validate_data_stage5:0validate_input_stage1:0validate_input_stage2:0validate_input_stage3:0validate_input_stage4:0.... and hundred of such linesThese are the files that don't contain the given match. I want to suppress those lines from displaying to stdout. I know of -q switch, but that would suppress the complete output, which I don't want.How do I do that?
grep how to suppress display of non-matched file?
grep;search;stdout;command switch
That's the behavior exhibited by grep -c.Probably you have a file whose name starts with - and contains a c character and you're using GNU grep without setting the POSIXLY_CORRECT environment variable.Use:grep -- delete *or better:grep delete ./*-- marks the end of options so that that filename will not be considered as an option (with a POSIX grep, it wouldn't since the non-option delete argument would have marked the end of options), but it wouldn't address the problem of a file called -. The grep delete ./* is more robust but has the drawback of outputting the extra ./ for matching files (though that may be considered a bonus since that helps identify file names that contain newline characters).