用find和rm命令来批量删除文件

来自linux中国网wiki
跳到导航 跳到搜索

用find和rm命令来批量删除文件

pre:
先上一个小例子
第一种 用 管道
 find / -name '*fcitx*' | xargs  rm -rf
可以
原理大概是先使用find 列出档案,再导向到xargs,xargs 再喂给rm,在这里,xargs 会分批依照rm 的最大数量喂给rm,然后就可以顺利删除档案了 。速度是非常快的哦。
 
注意:exec选项后面跟随着所要执行的命令或脚本,然后是一对儿{ },一个空格和一个\,最后是一个分号。
 find . -name .svn -type d -exec rm -rf {} \;
在删除之前可以打印出来看看:
 find . -name .svn -type d -exec ls -l {} \;
类似还可以参考下 find -ok 以及 xargs 命令。


第二 不用管道 
#注:分号是必需的
 find / -name "*google-music*" -exec rm -rf "{}" \;

 find [目录名] -name "文件名" -exec rm -rf "{}" \;
搜索删除文件,例如:find / -name *.raw -exec rm -rf "{}" \; 其中, -exec 表示后面执行命令 "{}" 表示查询到的文件名 -rf 为删除命令rm的参数,r 表示递归删除, f表示不需要确认,两个参数可根据需要去留


 find ./ -name "log_statdatas_201610*" -exec rm -rf "{}"\;

log_statdatas_2016102809.log
log_statdatas_2016102810.log
log_statdatas_2016102811.log


想起了备份脚本 用ctime 

atime 访问时间 accessed
mtime 修改时间 modified
ctime 改变状态 changed

 

find $DATADIR -type f -mtime +10 |xargs rm -rf

保留30天
find ./ -type f -mtime +29 |xargs rm -rf

按时间排序,删除最后的10个文件

ls -t | tail -100 | xargs rm -rf


http://blog.csdn.net/shangzwz/article/details/10304469
http://socol.iteye.com/blog/1189158