用find和rm命令来批量删除文件
用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