No seu caso, "-j"
é interpretado por grep
como argumento / opção, não como um padrão de pesquisa, mesmo que você o tenha citado. Para fazer com que seja o padrão para o que você deseja pesquisar, use apenas -e
option:
sudo find / -name "*" | xargs grep -sn --color=auto -e "-j"
ou até mesmo:
sudo find / -name "*" | xargs grep -sn --color=auto -e -j
O argumento -e
/ option significa que o próximo argumento é o padrão. Isso é de man grep
:
-e PATTERN, --regexp=PATTERN
Use PATTERN as the pattern. This can be used to specify
multiple search patterns, or to protect a pattern beginning with
a hyphen (-). (-e is specified by POSIX.)
Outras maneiras:
-
use
--
, como @Rinzwind disse em sua resposta , para fazergrep
saber que as opções terminaram. -
use
\
para escapar do hífen (-
):sudo find / -name "*" | xargs grep -sn --color=auto "\-j"