我是靠谱客的博主 魔幻蜻蜓,最近开发中收集的这篇文章主要介绍Linux命令:find . -type d -name "doc" -exec rm -rf {} \;报错分析及解决,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

# mkdir doc

# find . -type d -name "doc" -exec rm -rf {} ;  #虽然此处报错,却删除成功

# echo $?

221713_x80U_3285916.png

原因分析

    首先了解一个知识点,很容易被忽略,find会查找指定路径下的目录和文件及目录的子目录和子文件; find命令在查找第一个doc目录就将此路径传递给-exec后面的命令执行操作,从下面的这个图片可以看出,在查找到第一个doc路径后打印(-print)该路径,然后将该路径传递给后面的echo命令,那么也会再次打印该路径,故打印两次,执行完-exec后面的命令后,继续执行find命令,在刚才查找到doc路径下查找下一个名称为doc的命令。

221822_Nu3a_3285916.png

    故,在执行命令: # find . -type d -name "doc" -exec rm -rf {} ; 将查找到的目录传递给rm进行删除,而此时doc目录已经删除,find又要在已删除的doc目录下进行继续搜索是否有名称为doc的目录,因已删除,故报错(find: `./doc': No such file or directory)

总结:

    find将结果传递给-exec后的命令,然后继续执行find再次查找子目录

    find命令会查找指定路径下的文件和目录及目录下的子文件和目录。

解决方法

    # find . -type d -name "doc" | xargs rm -rf

图解:

221953_0OTk_3285916.png

转载于:https://my.oschina.net/u/3285916/blog/1600850

最后

以上就是魔幻蜻蜓为你收集整理的Linux命令:find . -type d -name "doc" -exec rm -rf {} \;报错分析及解决的全部内容,希望文章能够帮你解决Linux命令:find . -type d -name "doc" -exec rm -rf {} \;报错分析及解决所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(33)

评论列表共有 0 条评论

立即
投稿
返回
顶部