我试图在我的目录中查找包含字符串“<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)
grep "<3" -- *
Run Code Online (Sandbox Code Playgroud)
有了--
你能确定的选项的结束和的位置参数为许多GNU程序的开始。因此,文件-l
不会造成任何危害。
另一种选择是
grep "<3" ./*
Run Code Online (Sandbox Code Playgroud)