专栏首页GitHub专栏Linux 下删除大量文件效率对比,看谁删的快!

Linux 下删除大量文件效率对比,看谁删的快!

来 源:马哥Linux运维

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

首先建立50万个文件

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

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

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最快,最方便。

本文分享自微信公众号 - 杰哥的IT之旅(Jake_Internet)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-04-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Linux 终端下记不住命令的使用方法?这个开源项目帮你解决。

    在 Linux 终端下,难免会遇到一些问题,却不记得该问题之前有没有相关的解决办法?就开始通过各种搜索引擎来查找自己所需要解决的方案,但又不想离开终端去查找答案...

    杰哥的IT之旅
  • GitHub 神器:写代码、搜问题,全部都在「终端」完成!

    最常见的方法是去论坛询问、谷歌搜索,需要反复在网页和编译器页面切换,即使有两个很大的分屏,生产力也会受到影响。

    杰哥的IT之旅
  • Ubuntu 对比 Centos 后该如何选择?

    杰哥的IT之旅
  • Linux下删除大量文件

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

    小小科
  • Linux下删除大量文件

    ? Linux下删除大量文件 首先建立50万个文件 ➜ test for i in $(seq 1 500000);do echo text >>$i....

    小小科
  • Chrome 隐身模式可能没有你想得那么能保护个人隐私

    据外媒报道,大多数用户在用Chrome上网时都对它的隐身(Incognito)模式抱着合理的期待,但来自行业组织Digital Content Next委托的一...

    周俊辉
  • 设计模式常见面试知识点总结(Java版)

    这篇总结主要是基于我设计模式系列的文章而形成的的。主要是把重要的知识点用自己的话说了一遍,可能会有一些错误,还望见谅和指点。谢谢

    Java技术江湖
  • GLSL ES 语言—矢量矩阵运算

    矩阵右乘矢量的结果是矢量,其中每个分量都是原矢量中的对应分量,乘上矩阵对应行的每个元素的积的加和, 与下面等价:

    张晓衡
  • 如何在 CentOS 8 上安装 MariaDB

    MariaDB 是一个开源的关系型数据库管理系统,向后兼容,可替代 MySQL。它是由 MySQL 的一些原开发者和很多社区成员共同开发的。

    雪梦科技
  • 最全的CentOS MariaDB入门教程

    MariaDB是流行的跨平台MySQL数据库管理系统的分支,被认为是MySQL 的完全替代品。MariaDB是由Sun在Sun Microsystems合并期间...

    吴凌云

扫码关注云+社区

领取腾讯云代金券