Linux命令:find . -type d -name "doc" -exec rm -rf {} \;报错分析及解决

# 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

图解:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏How things work?

30分钟了解同步,异步,阻塞,非阻塞

同步,异步,阻塞,非阻塞,在一些场景下,它们是同一个概念的不同名字;在另一些场景下,它们是不同的概念。

1.2K150
来自专栏章鱼的慢慢技术路

Linux命令_磁盘管理_查看磁盘或目录的容量

25330
来自专栏守候书阁

.gitignore文件规则不起效的解决办法

在一个项目里面,多少会有一些文件是不需要上传到git上面的,比如node的依赖模块node_modules,这个文件夹超过10000个文件,大小也超过80M。所...

8410
来自专栏企鹅号快讯

基于python3.5+的web框架sanic中文入门

sanic是一款用 python3.5+ 写的 web framework,用法和 flask 类似,特点是非常快。 Github 官网:https://git...

28470
来自专栏Youngxj

linux更新内核版本

60330
来自专栏技术博文

Linux下用于查看系统当前登录用户信息的4种方法

作为系统管理员,你可能经常会(在某个时候)需要查看系统中有哪些用户正在活动。有些时候,你甚至需要知道他(她)们正在做什么。本文为我们总结了4种查看系统用户信息(...

48580
来自专栏WindCoder

intellij 出现“Usage of API documented as @since 1.6+”的解决办法

今天玩wafer时,发现代码中出现“Usage of API documented as @since 1.6+”的错误提示。

21010
来自专栏谈补锅

iOS项目groups和folder的区别(组和文件夹)

   在引用一个第三方框架的时候,已经拖进去了,但是引用框架里面的文件时,竟然报错说找不到.......查了一下,原来在拖进去时没有注意group和folder...

14230
来自专栏Golang语言社区

【Go 语言社区】删除redis所有KEY

批量删除Key Redis 中有删除单个 Key 的指令 DEL,但好像没有批量删除 Key 的指令,不过我们可以借助 Linux 的 xargs 指令来完成这...

50580
来自专栏章鱼的慢慢技术路

Linux命令_磁盘管理_查看磁盘或目录的容量

22450

扫码关注云+社区

领取腾讯云代金券