How to copy one file to multiple filenames?
The command touch {jan,feb,mar}-{Rep.xls,graph.xls}
creates files I can't open:
feb-graph.xls jan-Rep.xls feb-Rep.xls mar-graph.xls jan-graph.xls mar-Rep.xls
So I created one template file 1.ods
, saved with OO-Calc. Then I tried to copy this file using cp
again in the same fashion as cp
:
cp 1.ods {jan,feb,mar}{Rep.ods,graph.ods}
but that doesnt work:
cp: target `margraph.ods' is not a directory
How do I copy a single file to multiple files?
Solution 1:
Combine cat
(retrieves the contents of a file) with tee
(writes the content away to the files specified in the arguments):
cat 1.ods | tee {jan,feb,mar}-{Rep,graph}.ods >/dev/null
Alternative using shell redirection:
tee {jan,feb,mar}-{Rep,graph}.ods >/dev/null < 1.ods
In both cases, > /dev/null
is a redirection that discards the duplicated contents (tee
writes its input to each parameter and standard output).
Solution 2:
How about,
for file in {jan,feb,mar}-{Rep.xls,graph.xls} do cp 1.ods $file done