Copie uma estrutura de diretórios para pastas enumeradas

0

Minha estrutura de pastas é assim:

ej-1/index.html
ej-1/js/scripts.js
ej-2/index.html
ej-2/js/scripts.js
...
ej-12/index.html
ej-12/js/scripts.js

Às vezes, preciso re-estruturar as outras pastas enumeradas com um novo conjunto padrão de arquivos e pastas. Para esse fim, estou tentando copiar a estrutura base da pasta ideal para as outras, usando o seguinte:

cp -r ej-1/* ej-{2..12}/*

Minha expectativa era:

ej-1/* -> ej-2/*
ej-1/* -> ej-3/*
...
ej-1/* -> ej-12/*

Em vez disso, copia o conteúdo de cada pasta para o último, fazendo algumas bobagens de sobrescrita:

ej-1/* -> ej-12/*
ej-2/* -> ej-12/*
ej-3/* -> ej-12/*
...

O que estou fazendo de errado?

    
por Fabián 05.10.2018 / 09:35

1 resposta

1

Dê uma olhada no manual cp , com man cp . As partes relevantes são as seguintes.

SYNOPSIS
       cp [OPTION]... SOURCE... DIRECTORY
DESCRIPTION
       Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.

Ao especificar vários argumentos, este é o formato que você está usando. Isso copia vários SOURCE s para um único DIRECTORY , o que é não o que você deseja. Em vez disso, se você quiser copiar um único SOURCE para vários diretórios, poderá usar algo como um for loop, por exemplo,

for i in {2..12}; do cp -r ej-1/* ej-$i; done

N.B. Isso não foi testado. Também removi as * globs do destino, pois elas eram desnecessárias (da minha interpretação da sua pergunta) e resultam em um único DIRECTORY para o comando cp .

    
por 05.10.2018 / 10:04

Tags