在linux下rm -rf表示删除文件不做任何询问,大多数情况下,cosbeta就用rm –rf cache/*来清空bloggermap服务器上大约1G的缓存。
rm -rf对文件大小到无所谓,但是一旦文件数量过多可能就会删除失败,并且做出“argument too lang”之类的提示。出现这样的错误不难理解,因为rm –rf *执行过程是先遍历文件夹下文件名,然后作为参数传递给rm,文件太多(比如刚才cosbeta发现bloggermap cache目录中大约有30w(10G)个文件)肯定就会出现参数太长的提示了。
解决方法:find ./cache -name ‘*’ -exec rm {} \; 等到执行完毕之后,再进入cache,执行一个rm –rf *即可。
上面的命令其实是改变了rm的执行顺序:找到一个文件,便执行删除之,所以就不会提示参数过长了。
此命令的来源启示:
标签:linux, shellpaveo: 晕,走得那么快。
0:32 find
find PATH -name *.mp3 -exec rm {} \;
就可以了。

可以试试另一种方法。
直接在cache目录下
ls | xargs rm
原理是一样的,只不过-exec 是find命令的扩展,而xargs是一个处理此种情况比较通用的方法。
比如我们还可以写成这样:
find . | xargs rm
感谢分享