linux下删除目录及其子目录下某种类型文件

问题描述

Linux下,如果想要删除目录及其子目录下某种类型文件,比如说所有的txt文件,则可以使用下面的命令:

命令

1
find . -name "*.txt" -type f -print -exec rm -rf {} \;  

执行结果:

1
2
3
4
5
$ find . -name "*.txt" -type f -print -exec rm -rf {} \;
./a.txt
./b.txt
./Java/c.txt
./其他/d.txt

可以看到,当前目录下的a.txt,b.txt,子目录./Java/下的c.txt,子目录./其他/下的d.txt都被删除掉了。

参数说明

. : 表示在当前目录下

1
-name "*.txt"  

表示查找所有后缀为txt的文件

1
-type f  

表示文件类型为一般正规文件

1
-print

表示将查询结果打印到屏幕上

1
-exec command  

command为其他命令,-exec后可再接其他的命令来处理查找到的结果,上式中,{}表示”由find命令查找到的结果“,如上所示,find所查找到的结果放置到{}位置,-exec一直到”;“是关键字,表示find额外命令的开始(-exec结束(\;,这中间的就是find命令的额外命令,上式中就是 rm -rf

参考资料

原文:https://www.cnblogs.com/wyb628/p/7374372.html