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?

link|improve this question

21% accept rate
when you give multiple args to cp it assumes you want to copy a lot of files to the last one -- which is then expected to be a directory; hence your error. – nik May 26 '11 at 15:19
So, you want to copy a single file to multiple new files in one command? – nik May 26 '11 at 15:20
feedback

2 Answers

up vote 9 down vote accepted

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
link|improve this answer
+1, nice too! I seem to be biased towards for-loops ;-) – nik May 26 '11 at 15:23
@nik: my previous answer included a for loop too, but this one-liner is more clear – Lekensteyn May 26 '11 at 15:26
feedback

How about,

for file in {jan,feb,mar}-{Rep.xls,graph.xls}
do
  cp 1.ods $file
done
link|improve this answer
feedback

Your Answer

 
or
required, but never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.