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

首先建立50万个文件

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

测试目录:/home/test

模拟写入3000万个空文件:

echo test{01..30000000} | xargs touch


结果把inode都给占满了:

查看创建的空文件 :

#time find . -type f -empty |wc -l

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不起作用。或者
#rm -rf *.*
#s | xargs rm -rf



提示内存已被耗尽。

正确的删除方式:

1.直接删除父目录(速度:很慢)

[root@localhost home]# rm -rf test/


耗时39分钟

2.使用find命令配合 -delete 选项(速度:最慢!)

由于是空文件,这里使用-empty选项,实际应用场景应该使用-size 选项来指定文件大小进行删除

最快最推荐的方法(速度:极快):

创建一个空文件夹,使用rsync -a --delete选项,将空文件夹内容与目标文件夹进行同步

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

rsync是最快的方法,当然如果会使用Perl的话,还可以更快,但是并不是所有人都会,所以介绍一个最容易上手的方法。

不想介绍rm 和 find 这两种方法(即慢又不实用),但是为了严谨的告诉大家rsync比较好,所以就都贴上测试图片啦。

Linux 删除目录下文件的 10 种方法

删除当前目录下的文件

1.rm -f *
#最经典的方法,删除当前目录下的所有类型的文件

2.find . -type f -delete或find . -type f -exec rm -f {} ;
#用find命令查找普通文件并删除or用find命令的处理动作将其删除

3.find . -type f | xargs rm -f
#用于参数列表过长;要删除的文件太多

4.rm -f find . -type f
#删除全部普通文件

5.for delete in ls -l;do rm -f * ;done
#用for循环语句删除当前目录下的所有类型的文件

删除指定目录下的文件

1.rm -f 指定目录*
#最经典的方法,删除指定目录下的所有类型的文件

2.find 指定目录 -type f -delete或find 指定目录 -type f -exec rm -f {} ;
#用find命令查找指定目录下的所有普通文件并删除or用find命令的处理动作将其删除

3.find 指定目录 -type f | xargs rm -f
#用于参数列表过长;要删除的文件太多

4.rm-f find 指定目录 -type f
#删除指定目录下的全部普通文件

5.for delete in ls –l 指定目录路径;do rm -f * ;done
#用for循环语句删除指定目录下的所有类型的文件

参考链接 :
Linux 删除目录下文件的 10 种方法 :https://mp.weixin.qq.com/s/GuEUrnBJzvcOSq5A2VuXvg
作者:ZYJTF_Zhang
链接:https://blog.51cto.com/zhangdaifu/1933091

Linux 下删除大量文件效率对比,看谁删的快! :https://mp.weixin.qq.com/s/SMTZrBi20ijeWFhg0udONA

http://www.safebase.cn/article-260775-1.html

Linux 下删除大量文件效率对比相关推荐

  1. 500000小文件linux处理,Linux下删除大量文件效率对比

    今天我们来测试一下Linux下面删除大量文件的效率. 首先建立50万个文件 $ test for i in $(seq 1 500000);do echo text >>$i.txt;do ...

  2. linux下删除乱码文件

    为什么80%的码农都做不了架构师?>>>    在linux下对于每个文件都一个对应的不变的inode号,使用 ls -li 可以查看到文件的inode号,同时find可以根据ino ...

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

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

  4. 【Linux】linux下删除/清空文件夹/文件命令

    linux下删除和清空文件夹命令 删除文件夹命令 清空文件内容命令 删除文件夹命令 rm [选项] 文件 强行删除文件,没有提示 rm -f 文件名 删除文件夹以及文件夹中的所有文件命令 rm -rf ...

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

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

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

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

  7. Linux下删除一个文件夹命令

    Linux下大家经常要删除一些文件.直接使用rm即可,但是当要删除一个文件夹时,首先想到rmdir,但是如果文件夹非空,则非常麻烦. 下面的命令可以帮助删除一个非空的文件夹 #rm  -rf  文件夹 ...

  8. linux 下删除批量文件命令,linux 批量删除文件与空文件删除命令linux操作系统 -电脑资料...

    在linux中删除文件与删除目录及删除空文章都是使用rm 命令了,执行rm指令可删除文件或目录,如欲删除目录必须加上参数\"-r\",否则预设仅会删除文件,下面我来介绍在linux ...

  9. linux 下删除批量文件命令,linux系统中批量删除文件与空文件删除的命令

    linux命令在系统中有两种类型:内置Shell命令和Linux命令.接下来是小编为大家收集的linux系统中批量删除文件与空文件删除的命令,希望能帮到大家. linux系统中批量删除文件与空文件删除 ...

最新文章

  1. myeclipse设置
  2. 当C++爬山壁纸——C++山寨版
  3. 各个阶级的前端 必须掌握的基本技能汇总
  4. python xposed_GitHub - twqdev/CPWechatXposed: 使用Xposed Hook微信等APP
  5. Spark数据本地性
  6. C# Excel导入、导出
  7. OpenCV—积分图像
  8. BZOJ4653 [NOI2016] 区间 【线段树】
  9. 正则匹配图片地址 php,php正则匹配图片地址
  10. 如何引入阿里矢量图标库彩色图标
  11. 干货!软考高级网络规划设计师备考经验分享
  12. RoboCup智能机器人足球教程(四)
  13. Google检索技巧大全
  14. js根据经纬度计算距离
  15. 注册网站域名多少钱_申请域名多少钱
  16. 发送RST报文的几种可能的情况
  17. android基础的博客,【复习】Android基础
  18. java文件批量改名代码_[原创]JAVA版批量更名程序(附源码)(要求加分)
  19. bing重定向次数过多怎么办?新必应用不了了?只需一个小软件就可以轻松免费解决!
  20. 分析可执行文件mach-o

热门文章

  1. python去重排序_python读取TXT到数组及列表去重后按原来顺序排序的方法
  2. asp.net gridview 模板列 弹出窗口编辑_Mac桌面多窗口整理工具Moom,使用教程
  3. java 日期相减得分钟_java日期相减得到分钟??????
  4. linux xargs命令选项,使用xargs命令在Linux中执行多个操作 | MOS86
  5. 在图片控件中应用win32显示图片总结
  6. RabbitMQ消息队列集群
  7. Python之路(第十六篇)xml模块、datetime模块
  8. 【总结整理】javascript的函数调用时是否加括号
  9. Office 365 On MacOS 系列——安装 O365 其他组件
  10. Riverbed收购Mazu Networks巩固领导者地位