You can't have
/ (byte 0x2F on ASCII-based systems) in a file name, period.
You can use characters that look like
∕ (U+2215 division slash) or
⁄ (U+2044 fraction slash though found in fewer of the charsets used in current locales), so you could do (provided that U+2215 character exists in the locale's charset, includes GBK, BIG5, UTF-8, GB18030):
cp file.csv "file.$(date +%D | sed 's|/|∕|g').csv"
Or with some shells (
bash at least):
cp file.csv "file.$(date +%D | sed $'s|/|\u2215|g').csv"
sed instead of
tr as some
tr implementations including GNU
tr still don't support multi-byte characters).
But you may run into problems like the file name being rendered differently in locales using a different charset from the one that was in use at the time you created the file (and of course the confusion of users when they see what looks like a slash in a file name).
My advice would be to use the standard non-ambiguous (for most people outside the US, 03/12/18 would be interpreted as the 3rd of December 2018 for instance) YYYY-mm-dd format instead (which also helps wrt sorting):
cp file.csv "file.$(date +%Y-%m-%d).csv"
Which with many
date implementations you can shorten to:
cp file.csv "file.$(date +%F).csv"