文章目录
一、遇到问题
作为一个 Linux 玩家,想必你也曾遇到过以下错误提示:
-bash: /bin/rm: Argument list too long
二、问题原因
“Argument list too long
” 这个错误,字面意思是参数列表过长,
通常在用户在一行命令中提供了过多的参数(比如 ls/cp/rm * 等) 的时候出现;
那么,何为过长?
或者说提供多少个参数才不会触发 “Argument list too long” 呢?
可以通过 getconf ARG_MAX
查看 Linux 系统的这个限制:
:~> getconf ARG_MAX
2097152
三、准备测试环境
由于实测创造几百万个文件比较耗时,
为了加快测试节奏,减少等待时间,
这里将测试删除的样本文件数,设计为: 30万个。
产生 30万 个测试文件的方法如下:
time for i in `seq 1 300000`; do echo 0 > test$i; done
四、低效解决办法
如果不讲究删除速度的话,这里介绍几种比较低效的删除方法。
1、shell 循环删除
1.1 删除方法解析
实现一个 shell 循环,来逐个删除,也算是个比较低效的办法;
for i in $(echo *)
do
rm -f $i
done
1.2 删除速度实测
实测删除 30 万个文件,耗时为: 83m48.477s
time for i in $(echo *);do rm -f $i; done;
real 83m48.477s
user 42m55.000s
sys 21m50.788s
2、 find -exec
2.1 删除方法解析
find . -type f