咔叽游戏

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 458|回复: 0

[Linux] Linux删除文件不同方法效率对比

[复制链接]
  • TA的每日心情
    无聊
    2019-5-27 08:20
  • 签到天数: 4 天

    [LV.2]圆转纯熟

    发表于 2020-10-4 18:06:18 | 显示全部楼层 |阅读模式
    测试一下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 total16s

    很好很强大。

    5. Python删除
    1. import os
    2. import timeit
    3. def main():  
    4.   for pathname,dirnames,filenames in os.walk('/home/username/test'):   
    5.     for filename in filenames:      
    6.       file=os.path.join(pathname,filename)      
    7.       os.remove(file)     
    8. if __name__=='__main__':
    9. t=timeit.Timer('main()','from __main__ import main')
    10. print t.timeit(1)  
    11. 1
    12. 2
    13. $ 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 total16s

    这个应该最快了。

    7、结果:

      rm:文件数量太多,不可用find with -exec 50万文件耗时43分钟find with -delete 9分钟Perl 16sPython 9分钟rsync with -delete 16s
    结论:删除大量小文件rsync最快,最方便。
    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持咔叽论坛。

    原文地址:https://www.jb51.net/article/194039.htm

    QQ|免责声明|小黑屋|手机版|Archiver|咔叽游戏

    GMT+8, 2024-3-29 08:54

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

    快速回复 返回顶部 返回列表