Linux 下删除大量文件效率对比
今天我们来测试一下Linux下面删除大量文件的效率。
首先建立50万个文件
$ test for i in $(seq 1 500000);do echo text >>$i.txt;done
测试目录:/home/test
模拟写入3000万个空文件:
echo test{01..30000000} | xargs touch
结果把inode都给占满了:
查看创建的空文件 :
#time find . -type f -empty |wc -l
rm删除
$ time rm -f *
zsh: sure you want to delete all the files in /home/hungerr/test [yn]? y
zsh: argument list too long: rm
rm -f * 3.63s user 0.29s system 98% cpu 3.985 total
由于文件数量过多,rm不起作用。或者
#rm -rf *.*
#s | xargs rm -rf
提示内存已被耗尽。
正确的删除方式:
1.直接删除父目录(速度:很慢)
[root@localhost home]# rm -rf test/
耗时39分钟
2.使用find命令配合 -delete 选项(速度:最慢!)
由于是空文件,这里使用-empty选项,实际应用场景应该使用-size 选项来指定文件大小进行删除
最快最推荐的方法(速度:极快):
创建一个空文件夹,使用rsync -a --delete选项,将空文件夹内容与目标文件夹进行同步
find删除
$ time find ./ -type f -exec rm {} \;
find ./ -type f -exec rm {} \; 49.86s user 1032.13s system 41% cpu 43:19.17 total
大概43分钟,我的电脑。。。。。。边看视频边删的。
find with delete$ time find ./ -type f -delete
find ./ -type f -delete 0.43s user 11.21s system 2% cpu 9:13.38 total
用时9分钟。
rsync删除
# 首先建立空文件夹blanktest
$ time rsync -a --delete blanktest/ test/
rsync -a --delete blanktest/ test/ 0.59s user 7.86s system 51% cpu 16.418 total
16s,很好很强大。
Python删除
import os
import timeit
def main():for pathname,dirnames,filenames in os.walk('/home/username/test'):for filename in filenames:file=os.path.join(pathname,filename)os.remove(file)if __name__=='__main__':
t=timeit.Timer('main()','from __main__ import main')
print t.timeit(1)
1
2
$ python test.py
529.309022903
大概用时9分钟。
Perl删除
$ time perl -e 'for(<*>){((stat)[9]<(unlink))}'
perl -e 'for(<*>){((stat)[9]<(unlink))}' 1.28s user 7.23s system 50% cpu 16.784 total
16s,这个应该最快了。
结果:
rm:文件数量太多,不可用
find with -exec 50万文件耗时43分钟
find with -delete 9分钟
Perl 16s
Python 9分钟
rsync with -delete 16s
结论:删除大量小文件rsync最快,最方便。
rsync是最快的方法,当然如果会使用Perl的话,还可以更快,但是并不是所有人都会,所以介绍一个最容易上手的方法。
不想介绍rm 和 find 这两种方法(即慢又不实用),但是为了严谨的告诉大家rsync比较好,所以就都贴上测试图片啦。
Linux 删除目录下文件的 10 种方法
删除当前目录下的文件
1.rm -f *
#最经典的方法,删除当前目录下的所有类型的文件
2.find . -type f -delete或find . -type f -exec rm -f {} ;
#用find命令查找普通文件并删除or用find命令的处理动作将其删除
3.find . -type f | xargs rm -f
#用于参数列表过长;要删除的文件太多
4.rm -f find . -type f
#删除全部普通文件
5.for delete in ls -l
;do rm -f * ;done
#用for循环语句删除当前目录下的所有类型的文件
删除指定目录下的文件
1.rm -f 指定目录*
#最经典的方法,删除指定目录下的所有类型的文件
2.find 指定目录 -type f -delete或find 指定目录 -type f -exec rm -f {} ;
#用find命令查找指定目录下的所有普通文件并删除or用find命令的处理动作将其删除
3.find 指定目录 -type f | xargs rm -f
#用于参数列表过长;要删除的文件太多
4.rm-f find 指定目录 -type f
#删除指定目录下的全部普通文件
5.for delete in ls –l 指定目录路径
;do rm -f * ;done
#用for循环语句删除指定目录下的所有类型的文件
参考链接 :
Linux 删除目录下文件的 10 种方法 :https://mp.weixin.qq.com/s/GuEUrnBJzvcOSq5A2VuXvg
作者:ZYJTF_Zhang
链接:https://blog.51cto.com/zhangdaifu/1933091
Linux 下删除大量文件效率对比,看谁删的快! :https://mp.weixin.qq.com/s/SMTZrBi20ijeWFhg0udONA
http://www.safebase.cn/article-260775-1.html
Linux 下删除大量文件效率对比相关推荐
- 500000小文件linux处理,Linux下删除大量文件效率对比
今天我们来测试一下Linux下面删除大量文件的效率. 首先建立50万个文件 $ test for i in $(seq 1 500000);do echo text >>$i.txt;do ...
- linux下删除乱码文件
为什么80%的码农都做不了架构师?>>> 在linux下对于每个文件都一个对应的不变的inode号,使用 ls -li 可以查看到文件的inode号,同时find可以根据ino ...
- linux+删除乱码的文件,linux 下删除乱码文件-乾颐堂
在linux下删除文件,遇到特殊字符是一件非常头疼的事情. 1. 如果文件名带 '-' 或者'--'这样的字符 删除办法为:rm -- 文件名 如文件名为:-pythontab.tgz 如果用普通方法 ...
- 【Linux】linux下删除/清空文件夹/文件命令
linux下删除和清空文件夹命令 删除文件夹命令 清空文件内容命令 删除文件夹命令 rm [选项] 文件 强行删除文件,没有提示 rm -f 文件名 删除文件夹以及文件夹中的所有文件命令 rm -rf ...
- linux删除指定大小的文件,Linux下删除空文件,删除指定大小的文件
Linux下批量删除空文件(大小等于0的文件)的方法: find . -name "*" -type f -size 0c | xargs -n 1 rm -f 用这个还可以删除指 ...
- linux下删除乱码文件、目录
由于编码原因,在linux服务器上上传.创建中文文件或目录时,会产生乱码,如果想删除它,发现用rm命令是删除不了的 这种情况下,用find命令可以删除乱码的文件或目录. 首先进入乱码文件或目录所在的目 ...
- Linux下删除一个文件夹命令
Linux下大家经常要删除一些文件.直接使用rm即可,但是当要删除一个文件夹时,首先想到rmdir,但是如果文件夹非空,则非常麻烦. 下面的命令可以帮助删除一个非空的文件夹 #rm -rf 文件夹 ...
- linux 下删除批量文件命令,linux 批量删除文件与空文件删除命令linux操作系统 -电脑资料...
在linux中删除文件与删除目录及删除空文章都是使用rm 命令了,执行rm指令可删除文件或目录,如欲删除目录必须加上参数\"-r\",否则预设仅会删除文件,下面我来介绍在linux ...
- linux 下删除批量文件命令,linux系统中批量删除文件与空文件删除的命令
linux命令在系统中有两种类型:内置Shell命令和Linux命令.接下来是小编为大家收集的linux系统中批量删除文件与空文件删除的命令,希望能帮到大家. linux系统中批量删除文件与空文件删除 ...
最新文章
- myeclipse设置
- 当C++爬山壁纸——C++山寨版
- 各个阶级的前端 必须掌握的基本技能汇总
- python xposed_GitHub - twqdev/CPWechatXposed: 使用Xposed Hook微信等APP
- Spark数据本地性
- C# Excel导入、导出
- OpenCV—积分图像
- BZOJ4653 [NOI2016] 区间 【线段树】
- 正则匹配图片地址 php,php正则匹配图片地址
- 如何引入阿里矢量图标库彩色图标
- 干货!软考高级网络规划设计师备考经验分享
- RoboCup智能机器人足球教程(四)
- Google检索技巧大全
- js根据经纬度计算距离
- 注册网站域名多少钱_申请域名多少钱
- 发送RST报文的几种可能的情况
- android基础的博客,【复习】Android基础
- java文件批量改名代码_[原创]JAVA版批量更名程序(附源码)(要求加分)
- bing重定向次数过多怎么办?新必应用不了了?只需一个小软件就可以轻松免费解决!
- 分析可执行文件mach-o
热门文章
- python去重排序_python读取TXT到数组及列表去重后按原来顺序排序的方法
- asp.net gridview 模板列 弹出窗口编辑_Mac桌面多窗口整理工具Moom,使用教程
- java 日期相减得分钟_java日期相减得到分钟??????
- linux xargs命令选项,使用xargs命令在Linux中执行多个操作 | MOS86
- 在图片控件中应用win32显示图片总结
- RabbitMQ消息队列集群
- Python之路(第十六篇)xml模块、datetime模块
- 【总结整理】javascript的函数调用时是否加括号
- Office 365 On MacOS 系列——安装 O365 其他组件
- Riverbed收购Mazu Networks巩固领导者地位