find . -name *.c –print为什么会出错 | 张恒镭的博客

find . -name *.c –print为什么会出错

时间:13-11-20 栏目:Unix/Linux 作者:longteng 评论:1 点击: 3,726 次

今天执行find . -name *.c -print,想查一下当前目录下的.c的文件, 给出来这个提示:

find: paths must precede expression Usage:

find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt| exec] [path...] [expression]

当时我就纳了闷了,奇怪,然后我find . -name *.c -print 加了个转义字符就可以了,

查了下man find 有如下解释

$ *.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: 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 wild‐ card: $ *.c -print

也就是说shell会吧*.c展开为 bigram.c code.c frcode.c locate.c

等价于执行find . -name bigram.c code.c frcode.c locate.c -print

当然会报错了 所以加个屏蔽shell的解释 或者使用$ find . -name '*.c' -print 这样就不会报错了。

声明: 本文由( longteng )原创编译,转载请保留链接: find . -name *.c –print为什么会出错

find . -name *.c –print为什么会出错:目前有1 条留言

  1. 沙发
    恒镭, 张:

    现在可以了 第一篇评论是需要审核的 呵呵

    2013-11-21 下午7:44 [回复]

发表评论




------====== 本站公告 ======------
欢迎关注我的博客。

其他