常见错误
"find: 路径必须在表达式之前"
这个错误太对于新手太常见了,我也常犯这样的错误,看看下面的示例:
[root@localhost distutils-0.1]# ls ==> 这里先看看当前目录下有哪些文件和目录 configs distutils.spec doc Makefile scripts src tests [root@localhost distutils-0.1]# set -x && find src -name *[hc] || set +x + find src -name distutils.spec doc src find: 路径必须在表达式之前 Usage: find [-H] [-L] [-P] [path...] [expression] + set +x
上面通过 set -x 打开shell调试模式,我们可以看到对于*[hc](在find使用的时 候,我没有加上引号),shell给解释成一堆文件和目录了: distutils.spec doc src 。这是shell的文件匹配特性。所以find会出现错误。
所以在使用shell命令行的时候要切记,shell会第一个解释它!此处find可以这样来用:
find src -name \*[hc] # 转义星号
find src -name "*[hc]" # 让shell当成字符串
find src -name "*.[hc]" #
find src -name \*.hc # 其实我们试想寻找 .c 和 .h 文件,
# 所以加个'.'可以避免src这样的文件和目录出现在结果里面。
