在Linux下使用 "rm -rf *" 试图删除非常大量的小文件时,可能会报类似下边的错误:

/bin/rm: Argument list too long.

这是因为通配符"*"在执行时会被每个匹配的文件名来替换,例如“rm -rf file1 file2 file3 file4″。

系统只分配了一个比较小的缓冲区用来对这个列表进行排序,如果这个缓冲区满了,则shell不能执行这个命令。

为了解决这个问题,很多人使用find命令来操作。即用find查找每一个文件,然后把文件名一个接一个的传递个rm命令,形式如下:

find . -type f -exec rm -v {} \;

但是这个方法对于数量巨大的文件时非常缓慢。

google找到了这份blog文章: Deleting tons of files in Linux (Argument list too long),参考文中的方法解决了我的问题。

办法就是使用find命令内置的 "-delete" 参数 ,使用这种方法删除文件,速度大概是 2000个文件/秒,速度比之前方法得到极大提高。当然也可以加上 "-print"参数来显示每个删除的文件。

find . -type f -delete

find . -type d -print -delete

You can also show the filenames as you’re deleting them:

find . -type f -print -delete

…or even show how many files will be deleted, then time how long it takes to delete them:

root@devel# ls -1 | wc -l && time find . -type f -delete
100000
real    0m3.660s
user    0m0.036s
sys     0m0.552s

转载于:https://blog.51cto.com/xoyabc/1660685

find命令删除大量小文件相关推荐

  1. Linux快速复制T级数据或删除大量小文件

    1:快速大量小文件复制 a. 本机不同磁盘之间复制: 复制目录 $ tar cvf – /home/src_dir | tar xvf – -C /opt 复制文件 $ tar cf – access ...

  2. Linux快速复制或删除大量小文件

    前言 公司需要输送给网安部一批数据集,共计1550w张图片,大约3,5T. 处理过程中同时参考网上的一些方法的实践总结. 1:快速大量小文件复制 a. 本机不同磁盘之间复制: 复制目录 $ tar c ...

  3. Linux 快速删除大量小文件方法

    Linux 快速删除大量小文件方法     当我们在linux系统中要删除数万或者数十万甚至数百万的文件时使用rm -rf *就不太好用,因为要等待很长一段时间.在这种情况之下我们可以使用linux系 ...

  4. Ubuntu快速删除大量小文件方法

    进行以下两步操作即可: 1.第一步:创建空的文件夹: mkdir /tmp/blank 2.第二步:执行以下命令:rsync --delete-before -d /tmp/blank/ /home/ ...

  5. Linux快速复制或删除大量小文件 1

    在Linux下需要对大量小文件进行移动或复制时,用cp.mv都会显得很没有效率,可以用tar先压缩再解压缩再结合nc使用网络传输的方式. 一.快速复制 1.不同磁盘下复制 # tar cvf - /s ...

  6. 【✅windows奇怪的知识增加了✅】windows系统下快速删除海量小文件方法

    背景 测试收图demo等,会在本地保存大量图片文件,时间一长,会有多哒几十个GB的数据,占用大量磁盘空间.使用windows的右键删除耗时完全不靠谱,需要十几个小时.尝试了shift+del还是很慢. ...

  7. rm 命令删除除指定文件外的所有文件,非常简单

    非常简单, 只需要在不需要删除的文件前面添加英文感叹号 !,多个文件用竖线隔开放在小括号里. 比如要删除 除 testfile 和 libtest.so 之外的所有文件及文件夹, rm -rf !(t ...

  8. linux快速删除大量目录,Linux 快速删除大量小文件方法

    当我们在linux系统中要删除数万或者数十万甚至数百万的文件时使用rm -rf *就不太好用,因为要等待很长一段时间.在这种情况之下我们可以使用linux系统命令rsync来巧妙的处理.rsync实际 ...

  9. linux 快速删除大量小文件(数十万级别)

    进行以下两步操作即可: ​ # 第一步:创建空的文件夹: mkdir /tmp/blank# 第二步:执行以下命令: rsync --delete-before -d --progress /tmp/ ...

最新文章

  1. 遗传算法解决01背包
  2. ArrayList和LinkList区别
  3. 单例模式 之 单例模式——枚举
  4. HDOJ--4821--String【弦hash】
  5. python版本升级后编译_python学习笔记(7)--python版本升级
  6. NET中使用Memcached的相关资源整理
  7. 《Effective C#》读书笔记——条目14:尽量减少重复的初始化逻辑.NET资源管理
  8. 白话空间统计之二十五:空间权重矩阵(四)R语言中的空间权重矩阵(1)
  9. std::deque的使用
  10. 比较(0,π/2]上对sinx/x的定积分、对x/sinx的定积分与1的大小关系
  11. 计算机无法读光盘,win10系统无法读取光盘如何解决 win10系统读取光盘失败的解决方法...
  12. 小米官网竖直导航栏html,手把手教你做小米商城顶部导航栏
  13. 基于STM32F030实现RFID射频识别
  14. Google地图中关于根据具体坐标定位真实地理位置
  15. 学习日志-《微习惯》心得
  16. 超声波测距模块工作原理
  17. 通俗的讲,网络爬虫到底是什么?
  18. HDU 5242 上海大都会 G题
  19. 编辑数码照片最快最有趣的方式——NCH PhotoPad for Mac
  20. 计算机文档培训讲座,计算机的基础知识培训讲座.ppt

热门文章

  1. 还在用Swagger生成接口文档?我推荐你试试它.....
  2. AJAX 请求真的不安全么?
  3. 强强联合!Papers with Code 携手 arXiv,上传论文、提交代码一步到位
  4. CBNet和DetectoRS:COCO数据集霸榜模型
  5. 本科生如何自学机器学习?
  6. 985 CV 找不到工作? 4 点诚恳建议
  7. 理科生用创意毁灭世界,爆笑!
  8. 线性回归api初步使用
  9. 电路交换和报文交换和分组交换的概念和区别
  10. C语言字符串大小写转换_只愿与一人十指紧扣_新浪博客