Maximum number of Bash arguments != max num cp arguments?
As Ignacio said, ARG_MAX is the maximum length of the buffer of arguments passed to exec(), not the maximum number of files (this page has a very in-depth explanation). Specifically, it lists fs/exec.c as checking the following condition: PAGE_SIZE*MAX_ARG_PAGES-sizeof(void *) / sizeof(void *) And, it seems, you have some additional limitations: On a 32-bit Linux, …