为什么要与参数匹配的值-name
中find
必须用双引号标记?
# find / -type f -name *.out |wc -l 1>mv.out
0403-027 The parameter list is too long.
# cat mv.out
0
# find / -type f -name "*.out" |wc -l 1>mv.out
# cat mv.out
146302
Run Code Online (Sandbox Code Playgroud)
如果没有双引号,*.out
shell 会展开它,这意味着它会被当前目录中匹配的所有文件名替换*.out
(主要是任何.out
以点结尾但不以点开头的文件)。在您的情况下,似乎至少有两个匹配的文件find
作为参数传递给。find
不知道如何处理它们并抱怨参数列表太长。
通过引用模式,shell 保持原样,只需删除引号并find
看到一个未触及的 parameter *.out
,这可能是您想要的。