问答详情
源自:1-2 shell编程之正则表达式与通配符

find命令中不用双引号也不报错啊

find /data -name avc*


很正常的执行了啊。不需要

find /data -name "avc*"

提问者:laoqiaII 2015-08-13 17:25

个回答

  • onemoo
    2015-08-14 02:40:42
    已采纳

    命令后的字符串就会被当作各个参数,所以你这两个写法没有区别。

    双引号括起来的字符会被当作一个字符串,如果字符串中有空格,那也会被当作一个带空格的字符串,而不会被看作是由空格分开的两个字符串。

    还有,shell会对命令中的字符串做一些处理,如路径展开花括号展开波浪线展开...,加上双引号后就只有算术展开变量展开命令展开有效了。

    比如对于路径展开:

    # 会列出目录下所有以abc开头的文件
    ls abc*
    
    # 而这样就只会列出叫abc*的文件,也就是shell不会再将*通配符展开了
    ls "abc*"