老男孩教育每日一题-2017-04-18:命令风暴:如何快速删除Linux中海量小文件?
这道题考察的是当一个命令接上很多参数(几十万以上)会报一个错误:Argument list too long
因此你没有办法touch这么多文件,也没有办法一次性删除这么多文件。
[root@oldboydata]# touch test{1..500000}-bash:/bin/touch: Argument list too long
那该如何解决呢?
创建测试文件
mkdir/data && cd /datafor i in {1..50};do eval touch test{$((i-1))0000..${i}0000};done
#尝试使用rm删除
[root@oldboydata]# rm -f *-bash:/bin/rm: Argument list too long
解决方法:
1) ls|xargs rm -f2) find . -type f|xargs rm -f3) mkdir /nullrsync-av --delete /null/ /tmp/
删除文件消耗时间测试:
[
root@oldboy/]# cd data[root@oldboydata]# time ls |xargs rm real 0m7.651suser 0m2.273ssys 0m4.446s
#再次创建测试文件
[root@oldboy/]# cd data/[root@oldboydata]# time find . -type f|xargs rm -f real 0m7.482suser 0m0.426ssys 0m5.096s
#再次创建测试文件
[root@oldboy~]# mkdir /null[root@oldboy~]# time rsync -a --delete /null/ /data/ real 0m10.572suser 0m0.724ssys 0m7.893s
今天是老男孩教育每日一题陪伴大家的第30天。
对于题目和答案的任何疑问,请在博客评论区留言。
往期题目索引