sudo find / -name "*" | xargs grep -sn --color=auto "-j"
上述命令返回以下内容:
grep: invalid option -- 'j'
Usage: grep [OPTION]... PATTERN [FILE]...
Try `grep --help' for more information.
...
如何搜索字符串-j
?
答案1
在您的情况下,即使您引用了它,也会"-j"
将其解释grep
为参数/选项,而不是搜索模式。要使其成为您要搜索的模式,只需使用-e
选项:
sudo find / -name "*" | xargs grep -sn --color=auto -e "-j"
甚至:
sudo find / -name "*" | xargs grep -sn --color=auto -e -j
参数-e
/选项表示下一个参数是模式。这是来自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.)
其他方法:
答案2
告诉它选项以以下内容结尾--
:
sudo find / -name "*" | xargs grep -sn --color=auto -- "-j"
结果:
Binary file /initrd.img matches
Binary file /lib/modules/2.6.24-16-server/ubuntu/media/gspcav1/gspca.ko matches
Binary file /lib/modules/2.6.24-16-server/ubuntu/sound/alsa-driver/isa/es1688/snd-es1688.ko matches
Binary file /lib/modules/2.6.24-16-server/ubuntu/sound/alsa-driver/pci/ice1712/snd-ice1712.ko matches
/lib/modules/2.6.24-16-server/modules.dep:1807:/lib/modules/2.6.24-16-server/kernel/fs/nls/nls_euc-jp.ko:
Binary file /lib/modules/2.6.24-16-server/kernel/crypto/blowfish.ko matches
Binary file /lib/modules/2.6.24-16-server/kernel/fs/nls/nls_euc-jp.ko matches
Binary file /lib/modules/2.6.24-16-server/kernel/fs/nls/nls_cp936.ko matches
答案3
您可以-
使用转义字符\
$ sudo find / -name "*" | xargs grep -sn --color=auto "\-j"
您可能还想排除文件夹并仅搜索文件,请添加-type f
到find
:
$ sudo find / -name "*" -type f | xargs grep -sn --color=auto "\-j"
此外,如果您添加-P 4
到xargs
,它将在 4 个进程上并行执行所有操作,并且如果您拥有超过 1 个核心,则搜索速度可能会更快。
$ sudo find / -name "*" -type f | xargs -P 4 grep -sn --color=auto "\-j"