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