今日QA发了个请求,要求删除某目录下指定格式的文件。

[root@xx resin-3.1.9]# ls | wc -l
1013964

统计了下,有一百万多个文件!

而且文件的命名也很古怪,如“d:\temp\perf\1413787853558.html”...

直接用rm -f  *.html,不支持!

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

尝试用xargs,ls也不支持这么多的参数。

#ls *.html | xargs rm

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

再换个办法:

ls | grep "d:" | grep temp | grep perf | grep html | xargs rm -f

因为有\字符在文件名称中,无果。


小批量实验了几次,终于想到办法。

先把这些文件名称全部导入到一个文件中

ls | grep "temp" | grep "perf" | grep "d:" | grep "html" >xxx.remove

接着,跑一个for 循环,即可删除。

# for i in `cat xxx.remove`;do rm -f $i;done