Copiando um arquivo para vários outros arquivos com nomes diferentes

3

Eu tenho um arquivo (vamos chamá-lo file1.xyz ) que eu quero usar como modelo para trabalhar. Eu preciso copiar o conteúdo de file1.xyz para que eles substituam o conteúdo dos outros arquivos - file2.xyz , file3.xyz , file4.xyz , arquivo5.xyz ..... arquivo70.xyz enquanto mantém o nome do arquivo original.

Eu tentei usar:

cp file1.xyz *.xyz

Os arquivos estão todos no mesmo diretório e eu não quero anexá-los uns aos outros.

Isso não funcionou, como posso resolver esse problema?

    
por Amol Thakkar 06.03.2017 / 17:52

4 respostas

4

com zsh :

f=(file*.xyz)
cat $f[1] > $f[2,-1]

Isso grava todos os arquivos de saída em paralelo (como se estivesse usando tee ), o que significa que não se adapta bem a um grande número de arquivos.

Com qualquer shell parecido com o Bourne (incluindo zsh e bash ), você sempre pode fazer:

set file*.xzy
source=$1; shift
for dest do cp "$source" "$dest"; done
    
por 06.03.2017 / 18:14
3

Aqui está um one-liner que criaria os arquivos em seu exemplo:

for i in {2..70}; do cp file1.xyz file$i.xyz; done
    
por 06.03.2017 / 18:01
2

A maneira mais simples que você pode fazer pelo comando tee

cat file1.xyz | tee *.xyz >/dev/null
    
por 06.03.2017 / 18:15
2
echo file{2..70}.xyz | xargs -n 1 -t cp file1.xyz
    
por 06.03.2017 / 18:04