The reason this occurs is because bash actually expands the asterisk to every matching file, producing a very long command line. There are some workarounds for cp, mv, rm by find, xargs, and etc.



cp

ls dir1 | xargs -I {} cp {} dir2/


Add prefix as "nice -n10" as below if you do it in the server and want to keep working other process

ls dir1 | nice -n10 xargs -I {} cp {} dir2/

mv

Below commands enables you to copy files to $target_dir with no restriction

echo {$tmpFolder}/* | xargs mv -t {$target_dir}


Add prefix as "nice -n10" as below if you do it in the server and want to keep working other process

echo {$tmpFolder}/* | nice -n10 xargs mv -t {$target_dir}


rm

Delete all the files including directories

find . -name "*" -print0 | xargs -0 rm -r
find . -name "*" -delete