今天我们来测试一下Linux下面删除大量文件的效率。

首先建立50万个文件 

$ test for i in $(seq 1 500000);do echo text >>$i.txt;done

1、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不起作用

 

2、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分钟,我的电脑。。。。。。边看视频边删的。

 

3、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分钟。

 

4. 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,很好很强大。

5、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)

$ python test.py

529.309022903
大概用时9分钟。

6、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,这个应该最快了。

7、结果:

rm:文件数量太多,不可用
find with -exec 50万文件耗时43分钟
find with -delete 9分钟
Perl 16s
Python 9分钟
rsync with -delete 16s

结论:删除大量小文件rsync最快,最方便。

来自公众号:马哥Linux运维

Linux下删除大量文件效率对比的更多相关文章

  1. linux下删除大量文件提示参数过长解决办法

    linux下删除大量文件提示参数过长解决办法:在当前目录下rm -rf * 在linux中删除大量文件时,直接用rm会出现:-bash: /bin/rm: 参数列表过长的错误. 这时可以用find命令 ...

  2. Linux下删除的文件如何恢复

    Linux下删除的文件如何恢复 参考自: [1]linux下误操作删除文件如何恢复 [2]Linux实现删除撤回的方法 以/home/test.txt为例 1.df -T 文件夹 找到当前文件所在磁盘 ...

  3. linux 下删除乱码文件-乾颐堂

    在linux下删除文件,遇到特殊字符是一件非常头疼的事情. 1. 如果文件名带 ‘-’ 或者‘--’这样的字符 删除办法为:rm -- 文件名 如文件名为:-pythontab.tgz 如果用普通方法 ...

  4. Linux下删除空文件,删除指定大小的文件

    Linux下批量删除空文件(大小等于0的文件)的方法: find . -name "*" -type f -size 0c | xargs -n 1 rm -f 用这个还可以删除指 ...

  5. linux下删除乱码文件、目录

    由于编码原因,在linux服务器上上传.创建中文文件或目录时,会产生乱码,如果想删除它,发现用rm命令是删除不了的 这种情况下,用find命令可以删除乱码的文件或目录. 首先进入乱码文件或目录所在的目 ...

  6. Linux下删除乱码文件

    删除乱码文件 一些文件乱码

  7. Linux下删除大量文件

    主要参考了http://www.slashroot.in/which-is-the-fastest-method-to-delete-files-in-linux 首先建立50万个文件 ➜ test ...

  8. c#中@标志的作用 C#通过序列化实现深表复制 细说并发编程-TPL 大数据量下DataTable To List效率对比 【转载】C#工具类:实现文件操作File的工具类 异步多线程 Async .net 多线程 Thread ThreadPool Task .Net 反射学习

    c#中@标志的作用   参考微软官方文档-特殊字符@,地址 https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/toke ...

  9. Linux上删除大量文件几种方式对比

    目录 Linux上删除大量文件几种方式对比 1. rm删除:因为文件数量太多,rm无法删除(报错) 2. find查找删除:-exec 3. find查找删除:xargs 4. find调用-dele ...

随机推荐

  1. Natas14 Writeup(sql注入、sql万能密码)

    Natas14: 是一个登录页面.源码如下. if(array_key_exists("username", $_REQUEST)) { $link = mysql_connect ...

  2. SpringMVC框架——常用注解

    @RequestMapping Spring MVC 通过 @RequestMapping 注解将请求与业务方法进行映射,在方法定义处,在类定义都可以添加该注解. 常用参数: 1.value:指定请求 ...

  3. Ubuntu的BEEP去哪里了?

    一直知道ubuntu的beep不响应了,但是一直都没太关注过它怎么了. 今天关注了一下,发现网上都是在问怎么关掉它的,时间还是在07年左右. 搜索到了一些帖子,有一些是说没有找到恢复的方法,还有一些, ...

  4. Mol Cell Proteomics. | Integration and analysis of CPTAC proteomics data in the context of cancer genomics in the cBioPortal (解读人:徐洪凯)

    文献名:Integration and analysis of CPTAC proteomics data in the context of cancer genomics in the cBioP ...

  5. IE 跨域session丢失问题

    在测试时发现session 取不到值,以为是session赋值除了问题,但是在Chrome中一切正常,故排除此原因.那问题肯定出在浏览器身上里.于是一步一步调试,发现在IE中,如果页面跳转,Sessi ...

  6. 为 .net 生态贡献力量——制作并上传 nuget 包(内有独家彩蛋)

    前言 nuget 是 .net 的常用包管理器,目前已经内置到 Visual Studio 2012 以后的版本.大多数 .net 包都托管在 nuget.org,包括 .net core 框架基础包 ...

  7. python使用pip安装模块出现ReadTimeoutError: HTTPSConnectionPool的解决方法

    今天使用pip安装第三库时,有时会报错: pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='file ...

  8. hdu2612 又是迷宫系列

    题目链接:http://icpc.njust.edu.cn/Problem/Hdu/2612/ 题意:有两个人在地图上不同的位置,地图上由若干个餐厅,求两人能同时到达一个餐厅所用最少的总时间. 代码如 ...

  9. web----HTML(HTML的概念)

    ##HTML 1.概念:最基础的网页开发语言 *Hyper Text Markup Lanugage 超文本标记语言 *超文本:超文本是用超链接的方法,将各种不同空间的文字信息组织在一起的网状文本. ...

  10. UNIX环境高级编程——TCP/IP网络编程 常用网络信息检索函数

    UNIX环境高级编程——TCP/IP网络编程   常用网络信息检索函数 gethostname()   getppername()   getsockname()   gethostbyname() ...