linux下删除目录及其子目录下某种类型文件
问题描述
Linux下,如果想要删除目录及其子目录下某种类型文件,比如说所有的txt文件,则可以使用下面的命令:
命令
1 | find . -name "*.txt" -type f -print -exec rm -rf {} \; |
执行结果:
1 | find . -name "*.txt" -type f -print -exec rm -rf {} \; |
可以看到,当前目录下的a.txt
,b.txt
,子目录./Java/
下的c.txt
,子目录./其他/
下的d.txt
都被删除掉了。
参数说明
.
: 表示在当前目录下
1 | -name "*.txt" |
表示查找所有后缀为txt的文件
1 | -type f |
表示文件类型为一般正规文件
1 |
表示将查询结果打印到屏幕上
1 | -exec command |
command
为其他命令,-exec
后可再接其他的命令来处理查找到的结果,上式中,{}
表示”由find
命令查找到的结果“,如上所示,find所查找到的结果放置到{}位置,-exec一直到”;“是关键字,表示find
额外命令的开始(-exec
)到结束(\;
),这中间的就是find命令的额外命令,上式中就是 rm -rf