问答详情
源自:4-3 Linux中 find命令

touch和mkdir建的文档文件,用find后用绝对路径root删除不掉mkdir建立的文件,但是touch可以删除掉,但是用(.)可以删除掉,为什么呢

[root@localhost ~]# touch qz

[root@localhost ~]# mkdir qa

[root@localhost ~]# ls

  qa  qz install.org

[root@localhost ~]# find /root -name qz -exec rm -rf {} \;

[root@localhost ~]# ls

  qa install.org

[root@localhost ~]# find /root -name qa -exec rm -rf {} \;

find: “/root/qa”: 没有那个文件或目录

[root@localhost ~]# find . -name qa -exec rm -rf {} \;

[root@localhost ~]# ls

  install.org


提问者:qq_趁现在还年轻_03793811 2017-08-16 09:06

个回答

  • qq_趁现在还年轻_03793811
    2017-08-16 23:13:26

     已经解决了:看下面大佬的回答

    其实 这还. 还是绝对路径没关系  在你所谓报错的那一次 其实已经删除了qa
    【树干】xx(xxxxxxxxx)  21:36:09
    只所以会出这个错误 你得注意 这个错误 不是rm 命令生成的 是find命令产生的  这就涉及到find的工作机制 
    find /root -name qa -exec rm -rf {} \;
    首先找到了一个文件(一切皆文件,包括目录) qa  所以/root/qa作为参数传递给了 rm -rf 然后qa目录就被删除了 但是 注意 find查找文件是递归的 它会继续在qa这个目录下 去查找qa 
    【树干】xx(xxxxxxxx)  21:37:44
    然而 qa这个目录 却在上一步被删除了 所以find 懵逼了 说没有/root/qa这个目录  你让我去哪查  这个错误 其实和你手动删除qa目录后 find /root/qa -name * 是一样的  


  • mop18mop183811015
    2017-08-16 10:07:52

    赞一个,我也很想知道答案。