霜天部落 | 关注LAMP高性能、高并发架构的设计与研究

解决使用rm删除大批量文件遇到的问题

在linux下用rm删除大量文件时会出现参数列表过长的错误:

rm -rf *

-bash: /bin/rm: 参数列表过长

我们可以用find命令和xargs命令结合使用来替代rm。

比如:

rm -rf * 可以改为: find . -name “*” | xargs rm -rf ‘*’
rm test* -rf 可以改为: find . -name “*log” | xargs rm -rf “*log”

如果文件名或文件夹名中有空格使用下列方法:

find . -name “2011*” -print0 | xargs -0 rm -rf

参数-print0,于默认的-print相比,输出的序列不是以空格分隔,而是以null字符分隔。而xargs也有一个参数-0,可以接受以null而非空格间隔的输入流。

xargs命令的用途是构造参数列表并运行命令。