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 *
随机推荐
- [ 高危 ] mt SQL注入
RANK 28 金币 28 不是很核心的系统,但是这个检测方法挺新鲜的 数据包 POST /XXXpital HTTP/1.1Content-Length: 96Content-Type: a ...
- javascript 作用域详解
作用域理解:定义的变量.函数生效的范围.javascript 有全局作用域和函数作用域两种.注:es6实现let 块级作用域不是js原生的,底层同样是通过var实现的.如果想了解具体细节,请访问bab ...
- javascript宏任务和微任务
函数 // 你不能改变一个函数的 name 属性的值, 因为该属性是只读的 var object = { // someMethod 属性指向一个匿名函数 someMethod: function() ...
- Alpha(9/10)
鐵鍋燉腯鱻 项目:小鱼记账 团队成员 项目燃尽图 冲刺情况描述 站立式会议照片 各成员情况 团队成员 学号 姓名 git地址 博客地址 031602240 许郁杨 (组长) https://githu ...
- SQL 并联更新
UPDATE o SET col2 = c.col3 FROM bo1 AS o JOIN bo2 AS c ON c.col3<>'' WHERE c.col3<>'' UP ...
- Hello 2019 (D~G)
目录 Codeforces 1097 D.Makoto and a Blackboard(DP 期望) E.Egor and an RPG game(思路 LIS Dilworth定理) F.Alex ...
- centos安装ES(elasticsearch)
1.下载(版本为elasticsearch-6.5.4): https://www.elastic.co/downloads/elasticsearch 2.上传至服务/user/local目录 3. ...
- Kotlin基础(三)类、对象和接口
类.对象和接口 一.定义类的继承结构 一)Kotlin中的接口 Kotlin的接口与Java8中相似,它们可以包含抽象方法的定义以及非抽象方法的实现,但它们不能包含任何状态. interface Cl ...
- 经典SQL面试题(转)
以下题目都在MySQL上测试可行,有疏漏或有更优化的解决方法的话欢迎大家提出,我会持续更新的:) 有三个表,如果学生缺考,那么在成绩表中就不存在这个学生的这门课程成绩的记录,写一段SQL语句,检索出每 ...
- 什么是crf
什么是crf 利用crf++进行实体识别的流程 确定标签体系: 确定特征模板文件: 处理训练数据文件: 模型训练. 确定标签体系 大部分情况下,标签体系越复杂准确度也越高,但相应的训练时间也会增加.因 ...