首页 > 系统 > Linux > 正文

Linux下删除大量文件

2024-06-28 13:28:15
字体:
来源:转载
供稿:网友
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]? yzsh: argument list too long: rmrm -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 osimport timeitdef 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.py529.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 -exec50万文件耗时43分钟
find with -delete9分钟
Perl16s
Python9分钟
rsync with -delete16s

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表