这两个命令之间的区别(w& w / out“”)和为什么?

时间:2016-05-12 17:36:23

标签: linux centos find

在linux中,我在我的目录中有一个名为 test2 的文件,我使用touch命令创建。

当我运行命令

find . –name “*test*” -ls

它不会给我一个错误,但是当我运行

find . –name *test* -ls

它给了我一个错误

  

find:路径必须位于表达式:test2之前   用法:找[-H] [-L] [-P] [-Olevel] [-D help | tree | search | stat | rates | opt | exec] [path ...] [表达式]

为什么会这样?

2 个答案:

答案 0 :(得分:1)

*test*获取glob expanded by your shell(转换为多个令牌)。

"*test*"中没有发生全局扩展,因为周围的"符号会阻止通配。

答案 1 :(得分:0)

您的shell正在拦截*test*并查找当前目录中与该表达式匹配的文件和目录,之前它将展开的列表传递给findfind期望该点中只有一个字符串,而扩展列表可能是0或许多字符串。

使用引号,shell会忽略星号并将原始字符串*test*传递给find,然后使用这些星号作为您期望的通配符。