为什么grep不起作用?

Ale*_*lex 3 grep

我试图在我的目录中查找包含字符串“<3”的所有文件。这样做应该很简单:

grep "<3" *
Run Code Online (Sandbox Code Playgroud)

但是,运行此打印

grep: <3: No such file or directory
Run Code Online (Sandbox Code Playgroud)

然后继续为其他东西 grep 所有文件......(我不确定究竟是什么,但显示的行根本不包含 3 ......)

原因:显然-f我的目录中有一个文件,当它通过 传递给 grep 时*,grep 将其视为一个标志,导致这种行为。

尝试删除此文件通常也不起作用,因为rm它也将其视为标志。感谢 Nick 的建议,可以使用以下命令删除此文件

rm ./-f
Run Code Online (Sandbox Code Playgroud)

Hau*_*ing 6

grep "<3" -- *
Run Code Online (Sandbox Code Playgroud)

有了--你能确定的选项的结束和的位置参数为许多GNU程序的开始。因此,文件-l不会造成任何危害。

另一种选择是

grep "<3" ./*
Run Code Online (Sandbox Code Playgroud)