Попробуйте это:
$ mkdir a b
$ touch a/{1,2,3}
$ ls a
1 2 3
$ find a -type f -exec sh -c 'echo $# ; cp "$@" b/.' sh {} +
3
$ ls b
1 2 3
Если количество файлов превышает максимальную длину аргумента, команда печатает количество файлов, скопированных на блок:
$ touch a/{0..99999}
$ find a -type f -exec sh -c 'echo $# ; cp "$@" b/.' sh {} +
17768
16380
16380
16380
16380
16380
332
$ find b -type f | wc -l
100000
Первый блок немного больше, потому что имена файлов короче.