LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
12
返回列表 发新帖
楼主: ilpleut

莫名其妙的 find 命令

[复制链接]
 楼主| 发表于 2008-3-17 13:40:35 | 显示全部楼层
谢谢楼上各位。但我就是不懂,请看图。

同一个用户,root
在同一个目录,/var/log
用同一个命令和参数, find ./ -name
为什么找 .gz 文件没问题,而找 .log 文件却报错呢?

......

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2008-3-17 15:14:51 | 显示全部楼层
如果你认真看了上面的回复还是不明白,我建议你不用去想了,记住加双引号就行了
回复 支持 反对

使用道具 举报

发表于 2008-3-17 17:28:31 | 显示全部楼层
你想一下在第一个例子中,*.gz会被展开为什么?,而*.log会被展开为什么?
这样的命令是不是合法:find ./ -name b.gz
而这样的呢:find ./ -name a.log b.log

建议你最好自己多想想,想不清楚就写个程序,试一下bash传给程序的参数到底是什么,如
#include<cstdio>
int main(int argc, char *argv[]){
    int i;
    for (i=0;i<argc;i++)
          printf("%s\n",argv);
   return 0;
}

Post by ilpleut;1827504
谢谢楼上各位。但我就是不懂,请看图。

同一个用户,root
在同一个目录,/var/log
用同一个命令和参数, find ./ -name
为什么找 .gz 文件没问题,而找 .log 文件却报错呢?

......
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-3-17 19:45:26 | 显示全部楼层
当前目录下如果"直属的" .gz 文件超过一个,就会报错。是吧?
要想让他不报错,就加双引号。

谢谢各位了。
回复 支持 反对

使用道具 举报

发表于 2008-3-21 18:02:06 | 显示全部楼层
莫名其妙的不是find命令!
回复 支持 反对

使用道具 举报

发表于 2008-3-21 19:00:14 | 显示全部楼层
NON-BUGS
       $ find . -name *.c -print
       find: paths must precede expression
       Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec
] [path...] [expression]

       This happens because *.c has been expanded by the shell resulting in
       find actually receiving a command line like this:

       find . -name bigram.c code.c frcode.c locate.c -print

       That command is of course not  going  to  work.   Instead  of  doing
       things  this way, you should enclose the pattern in quotes or escape
       the wildcard:
       $ find . -name \*.c -print


以上摘自 man find
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表