命令“find -name”必须用引号括起来,否则不起作用。这是为什么?

命令“find -name”必须用引号括起来,否则不起作用。这是为什么?
find . -name *.rb

在我的 Ubuntu 上无法运行

我要做

find . -name "*.rb"

让它工作。

这是为什么?

答案1

如果当前目录中有一个以 结尾的文件.rb,则 shell 会将其展开。因此,如果您有一个名为“foo.rb”的文件,则执行的命令是find . -name foo.rb。(“查找名为 foo.rb 的文件”)

如果当前目录中有多个文件(例如“foo.rb”和“bar.rb”),情况会变得更糟。然后命令变为find . -name foo.rb bar.rb,这将导致 find 的参数错误。

为了防止 shell 扩展 glob 模式*.rb,您必须将其括起来(单引号或双引号都可以)或转义星号。以下命令具有等效行为:

find . -name "*.rb"
find . -name '*.rb'
find . -name \*.rb

相关内容