Linux下通过 rm -f 删除大量的小文件时出现类似如下错误信息:

 -bash: /bin/rm: Argument list too long

如下图所示:

问题原因


如果待删除文件中包含的小文件数量过多,通常是由于受到 shell 参数个数限制所致。

这个是Linux系统存在的限制,可以通过如下指令查看该参数值的配置:

 
getconf ARG_MAX

解决办法


注:

  • 删除操作为高风险命令,请一定谨慎使用。确认通过快照等方式对数据进行了有效备份,或者明确可以删除。
  • 如果待处理的文件数目过多,因为处理时间较长,推荐在业务低峰期进行操作,对磁盘的IO消耗较高。
  • 对于 cp、mv 等都可以采取相同的方式实现处理。
  • 请务必核实 dir 定义的目录中除了待删除文件外无其他类型的文件,避免误删除。

可以通过如下方式尝试删除:

结合 awk 删除

可使用 awk 一次删除一个的方式进行删除。但必须先进入该目录下。操作方法如下:
1.先进入该目标目录:

如图:

2. 使用 awk 删除:

 
ls -l| awk '{ print "rm -f ",$9}'|sh

如图:

3. 再次使用命令 ls -l 查看,发现文件已经删除完成了.如图:

结合 xargs 删除

通过 ls 来配合 xargs 删除 test 目录下的所有文件:

结合 find 删除

通过 find 来完成,更加安全智能,支持的参数更多。

可以先使用 ls 命令列出需要删除的文件看是否正确,然后再执行删除命令。例如,通过如下指令,删除 test 目录下的 png 文件:

 
find /usr/local/tests/ -name "*.png" |xargs rm -r

在执行rm命令时提示Argument list too long,如下:

通过自定义脚本删除

可以通过以下脚本通过循环实现删除,如下:

#!/bin/bash
# 此处通过 DIR 指定待处理文件所在的目录
DIR='/root/mysql' #待删除目录
cd $DIR
for I in `ls`
do
#读取ls结果中的各个文件名进行强制删除
rm -f $I
done

Linux下通过 rm -f 删除大量文件时报错:Argument list too long的更多相关文章

  1. Linux下通过rm -f删除大量文件时提示"-bash: /bin/rm: Argument list too long"的解决方法

    Linux下通过rm -f删除/var/spool/postfix/maildrop/中大量的小文件时提示: "-bash: /bin/rm: Argument list too long& ...

  2. linux下实现rm()函数删除文件或目录

    转载请注明原创:http://www.cnblogs.com/StartoverX/p/4600866.html 在linux下有两个函数可以用来删除文件: #include <unistd.h ...

  3. [C++]linux下实现rm()函数删除文件或目录

    转载请注明原创:http://www.cnblogs.com/StartoverX/p/4600866.html 在linux下有两个函数可以用来删除文件: #include <unistd.h ...

  4. Linux下卸载oracle需要删除的文件

    卸载oracle需要删除的文件 rm -rf /data1/oracle/app  #oracle安装目录在/data1/oracle中 rm -rf /usr/local/bin/dbhome rm ...

  5. Linux下用rm删除的文件的恢复方法

    Linux下用rm删除的文件的恢复方法_Linux教程_Linux公社-Linux系统门户网站https://www.linuxidc.com/Linux/2008-08/14744.htm linu ...

  6. 将linux下的rm命令改造成移动文件至回收站【转】

    转自:http://blog.csdn.net/a3470194/article/details/16863803 [-] 将linux下的rm命令改造成移动文件至回收站 将AIX下的rm命令改造成移 ...

  7. 如何将Linux rm命令删除的文件放入垃圾箱

    因为rm命令删除的文件是不会放入垃圾箱的,所以无法恢复,下面小编就给大家介绍一种方法,通过替换Linux rm命令的方法,从而将rm命令删除的文件放入垃圾箱. 方法: 1. 在/home/userna ...

  8. 将linux下的rm命令改造成移动文件至回收站

    将linux下的rm命令改造成移动文件至回收站 rm是Linux下文件删除的命令,它是Linux下非常强大却又非常危险的一条命令,特别是rm -rf有时候强大到让你欲哭无泪,当你想清除当前目录下的所有 ...

  9. Linux下的命令,删除文件夹下的所有文件,而不删除文件夹本身

    Linux下的命令,删除文件夹下的所有文件,而不删除文件夹本身 rm -rf *

随机推荐

  1. Service Discovery And Health Checks In ASP.NET Core With Consul

    在这篇文章中,我们将快速了解一下服务发现是什么,使用Consul在ASP.NET Core MVC框架中,并结合DnsClient.NET实现基于Dns的客户端服务发现 这篇文章的所有源代码都可以在G ...

  2. ContextRefreshedEvent事件使用注意事项(Spring)

    0 概述ContextRefreshedEvent 事件会在Spring容器初始化完成会触发该事件.我们在实际工作也可以能会监听该事件去做一些事情,但是有时候使用不当也会带来一些问题. 1 防止重复触 ...

  3. Manacher学习笔记

    目录 code(伪) Manacher算法 可在 \(O(n)\)的时间内求出一个字符串以每个位置为中心的最长回文子串. 原理:根据之前预处理出的回文串长度求得新的回文串长度 我们可以通过在字符中加上 ...

  4. ppt字体

    字体也需要设计.  太大众不太好.   ppt自带的字体样式 有毛笔风格的.vrinda. 其他的和这个字体样式差不多.选其中一个就可以了. 其他的个性样式就需要下载字体扩展了.作为经常做ppt的,还 ...

  5. 【DWM1000】 code 解密10 一 TAG 发送最后一个消息

    更上面ANCHOR发送信息时的RTLS_DEMO_MSG_ANCH_RESP, 我们很快就可以找到如下代码 case RTLS_DEMO_MSG_ANCH_RESP: { 这里面一部分是设置重要变量, ...

  6. PHP的json_encode不兼容JSON_UNESCAPED_UNICODE的解决方案

    PHP5.4才支持JSON_UNESCAPED_UNICODE这个参数,此参数是让中文字符在json_encode的时候不用转义,减少数据传输量.但在PHP5.3中,就得自己写个函数来实现,以下就是解 ...

  7. 潭州课堂25班:Ph201805201 django 项目 第二十三课 文章主页 轮播图前端实现 热门新闻推荐实现 详情页实现 (课堂笔记)

    前台代码 // 在static/js/news/index.js文件中 $(function () { // 新闻列表功能 let $newsLi = $(".news-nav ul li& ...

  8. MySQL之ORDER BY 详细解析

    1 概述 MySQL有两种方式可以实现ORDER BY: 1.通过索引扫描生成有序的结果 2.使用文件排序(filesort) 围绕着这两种排序方式,我们试着理解一下ORDER BY的执行过程以及回答 ...

  9. BZOJ4249 : Walls 防壁

    首先可以将攻击位置整理成折线,答案不变. 对于一个长度为$k$的询问,若折线不超过两段,那么显然可以暴力贪心求解. 否则考虑折线中最短的一段$x\rightarrow y$,若其长度$\leq k$: ...

  10. [POJ2287][Tyvj1048]田忌赛马 (贪心+DP)

    瞎扯 很经典的一道题 考前才打 我太菜了QAQ 就是先贪心排序了好 然后在DP 这样比直接DP更容易理解 (其实这题做法还有很多) 代码 #include<cstdio> #include ...