我以为这个问题在 10 年前就已经在 Linux 中修复了。4000 个文件似乎并不算太多,应该可以毫无问题地删除。所以这个问题显然存在于 OS X 中 - 可能不存在于 Ubuntu 中。我正在 OS X 上开发并部署到 Ubuntu
在这两种环境中是否有系统级解决方法?我真的不想为这么少的文件考虑这个问题?这个问题在 Linux 中仍然存在,特别是 Ubuntu 中?
答案1
这不是一个问题,而是一个限制。你可以使用如下方法:
find ./ -exec rm -rf {} \;
或者说,不使用能够完成这项工作的替代方案有什么问题吗?
答案2
我所知道的所有 Unix 和 Windows 上都存在这个问题。这实际上是对命令行上传递的字节数的限制,而不是文件数或其他什么的限制。
尝试getconf ARG_MAX
查看你的 Unix 的限制(以字节为单位)。你可以使用命令xargs
来解决此类问题。
答案3
虽然我不能代表其他 *nix 发言,但据我所知,这个“问题”在 Mac OS X 中一直存在。
ARG_MAX 定义如下/usr/include/sys/syslimits.h
:
#define ARG_MAX (256 * 1024) /* max bytes for an exec function */
sysctl kern.argmax
返回:
kern.argmax: 262144
(这是在 Mac OS X 10.7.3 中;许多此类限制在 OS X 的生命周期中已经逐渐增加)。