# 1. 现象 Linux删除或者ls大量文件时报错: ```bash [root@test-2 0]# ls tmp/* -bash: /bin/ls: Argument list too long [root@test-2 0]# rm -f tmp/* -bash: /bin/ls: Argument list too long ``` # 2. 原因 如果待删除文件中包含的小文件数量过多,通常是由于受到shell参数个数限制所致。 这个是Linux系统存在的限制,可以通过如下指令查看该参数值的配置: ```bash [root@test-2 0]# getconf ARG_MAX 2097152 ``` # 3. 解决办法 ## 使用 awk 删除 可使用 awk 一次删除一个的方式进行删除。但必须先进入该目录下。 ``` cd tmp ls -l | awk '{ print "rm -f ",$9}' | sh ``` ## 结合 xargs 删除 通过 ls 来配合 xargs 删除 test 目录下的所有文件: ```bash ls /usr/local/tests/ | xargs rm -r ``` ## 结合 find 删除 通过 find 来完成,更加安全智能,支持的参数更多。 可以先使用 ls 命令列出需要删除的文件看是否正确,然后再执行删除命令。例如,通过如下指令,删除 test 目录下的 png 文件: ```bash find /usr/local/tests/ -name "*.png" | xargs rm -r ```