Your analysis sounds correct to me. I would use
cat to join files, since that's its primary function. Just do so without the
-v switch, or any switches for that matter.
cat -v .. on the file has essentially trashed it. Did you try and open it in an image viewer? I tried your method and that's exactly what happened to mine.
You can see the evidence of this using the
file command too:
$ file copy*
copy1.png: PNG image data, 1440 x 847, 8-bit/color RGB, non-interlaced
copy2.png: ASCII text, with very long lines
cat's info page sheds a bit more light on the subject:
Display control characters except for LFD and TAB using '^'
notation and precede characters that have the high bit set with
On systems like MS-DOS that distinguish between text and binary
files, 'cat' normally reads and writes in binary mode. However, 'cat'
reads in text mode if one of the options '-bensAE' is used or if 'cat'
is reading from standard input and standard input is a terminal.
Similarly, 'cat' writes in text mode if one of the options '-bensAE' is
used or if standard output is a terminal.
So where are the ^M's?
If you open your
copy2.jpg file in say
vim you'll see that it's littered with them, for example: