linuxfind命令将查找到的文件批量删除
全盘搜索系统中所有后缀为.mp4的文件,并删除所有查找到的文件:
[[email protected]~]#find/-name"*.mp4"-execrm-rf{}\;
补充知识
Linux中find三种删除方式,常用于crontab定时任务和shell脚本
find查看删除的三种方式,如删除当前目录下的TXT文件:
方法1:xargsrm-f
find./-typef-name"*txt"|xargsrm-f
方法2:-execrm-f
find./-typef-name"*txt*"-execrm-f{}\;
-exec命令是查找到的每个文件调用一次rm命令,因此速度最慢
方法3:-delete
find./-typef-name"*txt"-delete
如果一次删除大量文件,建议采用第三种方式。经测试在删除千万级文件时,第三种方式比前两种快百倍。
删除时,常用参数:
0、按文件类型查找
-type:后面指定文件的类型。
b-块设备文件。
d-目录。
c-字符设备文件。
p-管道文件。
l-符号链接文件。
f-普通文件。
1、按文件名查找
-name:查找时文件名大小写敏感。
-iname:查找时文件名大小写不敏感。
2、按文件时间属性查找
-atime-n[+n]:找出文件访问时间在n日之内[之外]的文件。
-ctime-n[+n]:找出文件更改时间在n日之内[之外]的文件。
-mtime-n[+n]:找出修改数据时间在n日之内[之外]的文件。
-amin-n[+n]:找出文件访问时间在n分钟之内[之外]的文件。
-cmin-n[+n]:找出文件更改时间在n分钟之内[之外]的文件。
-mmin-n[+n]:找出修改数据时间在n分钟之内[之外]的文件。
find-ctime-2#找出距此时2天之内创建的文件
find-ctime+2#找出距此时2天之前创建的文件
3、按指定目录深度查找
-maxdepth:后面的参数表示距当前目录指定的深度,其中1表示当前目录,2表示一级子目录,以此类推。在指定该选项后,find只是在找到指定深度后就不在递归其子目录了。
4、排除指定子目录查找
-pathpathname-prune:避开指定子目录pathname查找。
-pathexpression-prune:避开表达中指定的一组pathname查找。
需要说明的是,如果同时使用-depth选项,那么-prune将被find命令忽略。
5、按文件大小查找
-size[+/-]100[c/k/M/G]:表示文件的长度为等于[大于/小于]100块[字节/k/M/G]的文件。
-empty:查找空文件。
6、实例:
删除N天前的文件,将/usr/local/backups目录下所有10天前带”.”的文件删除
find/usr/local/backups-mtime+10-name"*.*"-execrm-rf{}\;
|