Take the 2-minute tour ×
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free, no registration required.

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?

share|improve this question
    
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
add comment

2 Answers 2

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
share|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
add comment

How about,

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

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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