红联Linux门户
Linux帮助

关于find命令

发布时间:2009-10-11 23:24:52来源:红联作者:346929978
[root@localhost Server]# find . -name \(glibc\* -o -name cpp\*\) -exec cp {} /home/me \;
[root@localhost Server]# ls /home/me
cpp-4.1.2-14.el5.i386.rpm
本人原想把glibc*和cpp*文件都进行复制,结果glibc 却没有复制,不知为什么
文章评论

共有 5 条评论

  1. DouglasLau 于 2009-10-12 22:35:27发表:

    不行find还是搞不明白!

  2. acrofox 于 2009-10-12 06:46:54发表:

    你的括号放错地方了吧。

    find . \( -name glibc\* -o -name cpp\* \) -exec cp {} /home/me \;

  3. wang7131984 于 2009-10-12 00:03:47发表:

    错了,应该是如果不满足就执行,短路或。

  4. wang7131984 于 2009-10-12 00:01:43发表:

    find中的-o是如果满足前面的条件就执行后面的动作的意思,不能用来连接两个条件。你可以用一下四个方法来完成这个动作。
    方法一:for i in glic* cpp*; do mv $i ~;done
    方法二:ls -1|egrep "glibc|cpp"|xargs -I '{}' mv {} ~
    方法三:find . -name glibc* -exec mv {} ~ \;find . -name cpp* -exec mv {} ~ \
    方法四:find . -name glibc* -exec mv {} ~ \
    ^glibc^cpp

  5. 346929978 于 2009-10-11 23:30:36发表:

    为什么CP只接受了-name cpp\*的查找结果