You could do something similar to Windows behavior, using the --backup=numbered
option:
$ ls dir1
apple banana carrot date egg fish grape ham
then
$ for f in dir1/*; do cp -vf --backup=numbered "$f" "$f"; done
'dir1/apple' -> 'dir1/apple.~1~'
'dir1/banana' -> 'dir1/banana.~1~'
'dir1/carrot' -> 'dir1/carrot.~1~'
'dir1/date' -> 'dir1/date.~1~'
'dir1/egg' -> 'dir1/egg.~1~'
'dir1/fish' -> 'dir1/fish.~1~'
'dir1/grape' -> 'dir1/grape.~1~'
'dir1/ham' -> 'dir1/ham.~1~'
giving
$ ls dir1
apple banana.~1~ date egg.~1~ grape ham.~1~
apple.~1~ carrot date.~1~ fish grape.~1~
banana carrot.~1~ egg fish.~1~ ham
Note that -f
(or --force
) is still required to override the default "same file" behavior.