在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 ...] [表达式]
为什么会这样?
答案 0 :(得分:1)
*test*
获取glob expanded by your shell(转换为多个令牌)。
"*test*"
中没有发生全局扩展,因为周围的"
符号会阻止通配。
答案 1 :(得分:0)
您的shell正在拦截*test*
并查找当前目录中与该表达式匹配的文件和目录,之前它将展开的列表传递给find
。 find
期望该点中只有一个字符串,而扩展列表可能是0或许多字符串。
使用引号,shell会忽略星号并将原始字符串*test*
传递给find
,然后使用这些星号作为您期望的通配符。