概述
2019独角兽企业重金招聘Python工程师标准>>>
# mkdir doc
# find . -type d -name "doc" -exec rm -rf {} ; #虽然此处报错,却删除成功
# echo $?
原因分析
首先了解一个知识点,很容易被忽略,find会查找指定路径下的目录和文件及目录的子目录和子文件; find命令在查找第一个doc目录就将此路径传递给-exec后面的命令执行操作,从下面的这个图片可以看出,在查找到第一个doc路径后打印(-print)该路径,然后将该路径传递给后面的echo命令,那么也会再次打印该路径,故打印两次,执行完-exec后面的命令后,继续执行find命令,在刚才查找到doc路径下查找下一个名称为doc的命令。
故,在执行命令: # 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
图解:
转载于: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 {} \;报错分析及解决所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复