Esta mensagem não é de ls , mas de exec . você pode ver o tamanho máximo da lista de argumentos executando getconf ARG_MAX .
Não são quantos arquivos podem ser manipulados pelo aplicativo, mas o tamanho dos argumentos que podem ser passados usando exec para o sistema operacional, que retorna E2BIG se o tamanho dos argumentos estiver além do aceitável intervalo.
Esse limite era tradicionalmente (até o Linux 2.6.23) conferido usando o kernel define ARG_MAX , encontrado em sys/linux/limits.h . No entanto, hoje em dia isso é específico para o ambiente que você está executando. Normalmente, o tamanho máximo dos argumentos agora pode ser tão grande quanto um quarto do tamanho da pilha do espaço do usuário.