zoukankan      html  css  js  c++  java
  • Linux下删除大量文件

    主要参考了http://www.slashroot.in/which-is-the-fastest-method-to-delete-files-in-linux

    首先建立50万个文件

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

    1.   rm

    ➜  test  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

    ➜  test  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

    ➜  test  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

    ➜  test  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
  • 相关阅读:
    JVMTIAgent
    Java 虚拟机编程接口JVMIT
    Java调试平台体系JPDA
    什么是缓存
    2019第49周日
    什么是你拥有的资本
    java里的static/final含义
    Java语言和JVM的使用说明书
    画图前端:mermaid。时序图/类图/甘特图/流程图/状态图/饼图。类似工具:Typora
    java通过下划线数字字面量增加可读性:10_00_00表示100000
  • 原文地址:https://www.cnblogs.com/linxiyue/p/3536925.html
Copyright © 2011-2022 走看看