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