Como copiar um arquivo para vários nomes de arquivos?

5

O comando touch {jan,feb,mar}-{Rep.xls,graph.xls} cria arquivos que não consigo abrir:

feb-graph.xls jan-rep.xls feb-rep.xls mar-graph.xls jan-graph.xls mar-rep.xls

Então, criei um arquivo de modelo 1.ods , salvo com o OO-Calc. Então eu tentei copiar este arquivo usando cp novamente da mesma forma que cp :

cp 1.ods {jan,feb,mar}{Rep.ods,graph.ods}  

mas isso não funciona:

  

cp: target 'margraph.ods' não é um diretório

Como copio um único arquivo para vários arquivos?

    
por Kangarooo 26.05.2011 / 17:06

2 respostas

13

Combine cat (recupera o conteúdo de um arquivo) com tee (grava o conteúdo nos arquivos especificados nos argumentos):

cat 1.ods | tee {jan,feb,mar}-{Rep,graph}.ods >/dev/null

Alternativa ao redirecionamento de shell:

tee {jan,feb,mar}-{Rep,graph}.ods >/dev/null < 1.ods

Em ambos os casos, > /dev/null é um redirecionamento que descarta o conteúdo duplicado ( tee grava sua entrada em cada parâmetro e saída padrão).

    
por Lekensteyn 26.05.2011 / 17:19
4

Que tal,

for file in {jan,feb,mar}-{Rep.xls,graph.xls}
do
  cp 1.ods $file
done
    
por nik 26.05.2011 / 17:21