Sí, ese es un límite en el tamaño acumulativo de argumentos y entorno pasados a la execve()llamada del sistema al ejecutar un comando externo.
Con zsh, puedes usar su incorporado mven su lugar:
zmodload -F zsh/files +b:zf_mv
zf_mv ./*/* .
O use zargspara dividir la lista en fragmentos manejables:
autoload zargs
zargs -Ifiles ./*/* -- mv files .
Con ksh93:
command -x mv ./*/* .
Con GNU xargsy con GNU mvcon un shell donde printfestá integrado (la mayoría, mkshsiendo la excepción notable):
printf '%s\0' ./*/* | xargs -r0 mv -t .
tpodría ser para "objetivo"?