...per your comment on the questioncomment on the question...
pax -rws'/\.JPG$/.CAP&/' /root/of/copied/tree /dest/path If .jpg and .JPG are your only issues, that should just work.
You can also add a print primitive to the filename substitution to get a list of all of those filenames which were changed:
pax -rws'/\.JPG$/.CAP&/p' /root/of/copied/tree /dest/path As near as I can tell, pax should already be installed on an OSX system, and so this should amount to a pretty stress-free solution overall.
If the problems turn out to be more profound after all, though, it may also be of interest to you that pax supports...
-iInteractively rename files or archive members. For each archive member matching a pattern operand or each file matching a file operand,
paxwill prompt to/dev/ttygiving the name of the file, its file mode, and its modification time.paxwill then read a line from/dev/tty. If this line is blank, the file or archive member is skipped. If this line consists of a single period, the file or archive member is processed with no modification to its name. Otherwise, its name is replaced with the contents of the line.paxwill immediately exit with a non-zero exit status if EOF is (CTRL+D) encountered when reading a response or if/dev/ttycannot be opened for reading and writing.