为什么 grep 不起作用?

为什么 grep 不起作用?

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

grep "<3" *

但是,运行此打印

grep: <3: No such file or directory

然后继续 grep 所有文件以查找其他内容...(我不确定到底是什么,但显示的行根本不包含 3...)

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

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

rm ./-f

答案1

grep "<3" -- *

您可以使用它来--确定许多 GNU 程序的选项结尾和位置参数的开头。因此,文件-l不会造成任何损害。

另一种选择是

grep "<3" ./*

答案2

无法复制:

$ echo '<3' > foo
$ grep "<3" *
foo:<3

相关内容