Copiando arquivos e pastas com cp com shopt extglob - erro não é um diretório

1

Estou tentando copiar arquivos de um diretório, excluindo uma pasta e um arquivo. Meu problema é que um erro com shopt extglob é ativado. Aqui está o meu código:

DEPLOY_SIMULATION_ENV="/home/user/Desktop/fancyproject/"
shopt -s extglob
cp -r ./!(nbproject|zexp.html) "$DEPLOY_SIMULATION_ENV"
shopt -u extglob

Isso me dá

‘/home/user/Desktop/myfancyproject/’ is not a directory

Claro, eu quero que o cp crie o diretório myfancyproject atuomatically. Eu tenho uma solução alternativa com mkdir $ DEPLOY_SIMULATION_ENV primeiro, mas há uma maneira de fazer isso com cp? Ele se comporta estranhamente quando o extglob está ativo.

    
por shadox 22.09.2014 / 13:05

1 resposta

1

Você tem certeza de que o problema não é o uso de "usuário" aqui ...

DEPLOY_SIMULATION_ENV="/home/user/Desktop/fancyproject/"

Se o nome da conta não for "usuário", ele falhará com o mesmo erro que você mostra. Você precisa de $USER se quiser o usuário real.

  

Existe uma maneira de fazer isso com cp

Sim ... mas não como você espera.

  

- pais

     

Formate o nome de cada arquivo de destino anexando ao diretório de destino uma barra e o nome especificado do arquivo de origem. O último argumento dado ao cp deve ser o nome de um diretório existente. Por exemplo, o comando:

      cp --parents dir1/dir2/file1 dir3

criará /dir1/dir2 dentro de dir3 (precisa já existir) e copie file1 para ele.

    
por Rinzwind 22.09.2014 / 13:20