Linux下通过 rm -f 删除大量文件时报错:Argument list too long
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的更多相关文章
- Linux下通过rm -f删除大量文件时提示"-bash: /bin/rm: Argument list too long"的解决方法
Linux下通过rm -f删除/var/spool/postfix/maildrop/中大量的小文件时提示: "-bash: /bin/rm: Argument list too long& ...
- linux下实现rm()函数删除文件或目录
转载请注明原创:http://www.cnblogs.com/StartoverX/p/4600866.html 在linux下有两个函数可以用来删除文件: #include <unistd.h ...
- [C++]linux下实现rm()函数删除文件或目录
转载请注明原创:http://www.cnblogs.com/StartoverX/p/4600866.html 在linux下有两个函数可以用来删除文件: #include <unistd.h ...
- Linux下卸载oracle需要删除的文件
卸载oracle需要删除的文件 rm -rf /data1/oracle/app #oracle安装目录在/data1/oracle中 rm -rf /usr/local/bin/dbhome rm ...
- Linux下用rm删除的文件的恢复方法
Linux下用rm删除的文件的恢复方法_Linux教程_Linux公社-Linux系统门户网站https://www.linuxidc.com/Linux/2008-08/14744.htm linu ...
- 将linux下的rm命令改造成移动文件至回收站【转】
转自:http://blog.csdn.net/a3470194/article/details/16863803 [-] 将linux下的rm命令改造成移动文件至回收站 将AIX下的rm命令改造成移 ...
- 如何将Linux rm命令删除的文件放入垃圾箱
因为rm命令删除的文件是不会放入垃圾箱的,所以无法恢复,下面小编就给大家介绍一种方法,通过替换Linux rm命令的方法,从而将rm命令删除的文件放入垃圾箱. 方法: 1. 在/home/userna ...
- 将linux下的rm命令改造成移动文件至回收站
将linux下的rm命令改造成移动文件至回收站 rm是Linux下文件删除的命令,它是Linux下非常强大却又非常危险的一条命令,特别是rm -rf有时候强大到让你欲哭无泪,当你想清除当前目录下的所有 ...
- Linux下的命令,删除文件夹下的所有文件,而不删除文件夹本身
Linux下的命令,删除文件夹下的所有文件,而不删除文件夹本身 rm -rf *
随机推荐
- CMake结合Visual Studio中开发Qt应用程序注意事项
Qt工程管理 个人比较偏爱于使用CMake来管理C++工程,因为只要编写一个CMakeLists.txt文件,就可以在Windows和Mac上生成各自的IDE工程.在Windows上, CMake自然 ...
- pyspider 启动错误遇到的一些坑
https://blog.csdn.net/SiHann/article/details/88239892 突然接到一个项目是关于pyspider,遇到了一些小坑,百度一下发现并没有很好的解决所以研究 ...
- MySQL_时间戳处理
时间戳查询当天范围的数据 date(FROM_UNIXTIME(createAt, '%Y-%m-%d %H:%i:%s')) = CURDATE() 例: SELECT * FROM q_compa ...
- 解决VS Code开发Python3语言自动补全功能不带括号的问题
Visual Studio Code(以下简称VS Code)用来开发Python3,还是很便利的,本身这个IDE就是轻量级的,才几十兆大小,通过安装插件的方式支持各种语言的开发.界面也美美哒,可以在 ...
- C语言基础一(敲打键盘、寻找资料)
事前声明一点:小编的所有材料都是基础,没有什么大的不同,您若觉得不错的话,可以互相探讨下,毕竟本人也是小雏鸟. 大家在学习C语言.C++类似的高端语言时候,往往都是为了学而学,殊不知为什么而学,或许更 ...
- BZOJ3273 : liars
枚举每个人,计算他必定是诚实者的情况下至少有几个人说谎,若超过$t$则他肯定是说谎者. 对于至少有几个人说谎,区间信息可以合并: 每个区间维护最左最右两个人$l,r$以及$f[i][j]$表示$l$和 ...
- pngcrush caught libpng error原因及解决方法
报错信息: While reading /Users/zhangyanfeng/Desktop/程序/KeyBoardDemo/KeyBoardDemo/keyboard/KerboardResour ...
- PAT Basic 1020
1020 月饼 (25 分) 月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼.现给定所有种类月饼的库存量.总售价.以及市场的最大需求量,请你计算可以获得的最大收益是多少. 注意 ...
- PAT基础6-10
6-10 阶乘计算升级版 (20 分) 本题要求实现一个打印非负整数阶乘的函数. 函数接口定义: void Print_Factorial ( const int N ); 其中N是用户传入的参数,其 ...
- 大数据hadoop生态圈
大数据本身是个很宽泛的概念,Hadoop生态圈(或者泛生态圈)基本上都是为了处理超过单机尺度的数据处理而诞生的.你可以把它比作一个厨房所以需要的各种工具.锅碗瓢盆,各有各的用处,互相之间又有重合.你可 ...