ls 可以列出的最大文件数

Jis*_*air 9 linux ls

我使用脚本删除目录中的旧文件,但脚本一直显示

/usr/bin : Argument list too long
Run Code Online (Sandbox Code Playgroud)

原来文件的数量是40000个以上,所以我想知道可以列出的文件的最大限制是多少。有没有办法找到它?是系统特定的吗?

Chr*_*own 13

此消息不是来自ls,而是来自execve。您可以通过运行查看参数列表的最大大小getconf ARG_MAX

不是应用程序可以处理多少文件,而是可以传递exec给操作系统E2BIG的参数的大小,如果参数的大小超出可接受的范围,则返回。

这个限制传统上(直到 Linux 2.6.23)是使用内核定义赋予的ARG_MAX,在sys/linux/limits.h. 但是,现在这是特定于您运行的环境的。通常,参数的最大长度现在可以达到用户空间堆栈大小的四分之一。


gre*_*eke 7

该限制因操作系统和版本而异。限制不是文件数,而是字节数。您可以(通常)像这样获得本地限制:

$ getconf ARG_MAX
2097152
Run Code Online (Sandbox Code Playgroud)

另见:BASH 常见问题 095