A opção -w
faz com que o grep procure palavras, portanto, ele mostrará crk
quando estiver cercado por caracteres que não sejam de palavras. De man grep
:
-w, --word-regexp Select only those lines containing matches that form whole words. The test is that the matching substring must either be at the beginning of the line, or preceded by a non-word constituent character. Similarly, it must be either at the end of the line or followed by a non-word constituent character. Word-constituent characters are letters, digits, and the underscore.
_
é um caractere de palavra, por isso, crk_op
não corresponderá a crk
com -w
.
A regex complicada "[^ ]*crk[^ ]*"
funciona porque permite qualquer número de caracteres não-espaciais entre os limites de palavras que o grep requer.
Basta fazer:
grep -rn --include '*.c' . -e crk
Você não precisa qoute .
para o diretório atual lá.