Precisa de ajuda para melhorar o script

1

Eu tenho um grupo de pastas (L1N-L5N), no qual eu quero copiar do meu / home / michael / documents / XXX para minha pasta do Dropbox. No momento, usei o seguinte script:

#!/bin/sh
cp -ra /home/michael/Documents/GeneralNetwork /GNI /home/michael/Dropbox/NetworkData
cp -ra /home/michael/Documents/GeneralNetwork /L1N /home/michael/Dropbox/NetworkData
cp -ra /home/michael/Documents/GeneralNetwork /L2N /home/michael/Dropbox/NetworkData
cp -ra /home/michael/Documents/GeneralNetwork /L3N /home/michael/Dropbox/NetworkData
cp -ra /home/michael/Documents/GeneralNetwork /L4N /home/michael/Dropbox/NetworkData
cp -ra /home/michael/Documents/GeneralNetwork /L5N /home/michael/Dropbox/NetworkData

Isso funciona, mas mal.

Eu também não tenho certeza do motivo pelo qual ele retorna isso:

cp: cannot stat ‘/GNI’: No such file or directory
cp: cannot stat ‘/L1N’: No such file or directory
cp: cannot stat ‘/L2N’: No such file or directory
cp: cannot stat ‘/L3N’: No such file or directory
cp: cannot stat ‘/L4N’: No such file or directory
cp: cannot stat ‘/L5N’: No such file or directory

Eu pensei em encurtar:

cp -ra /home/michael/Documents/GeneralNetwork/L*

Ou algum outro curinga para pegar todas as pastas que contenham "L". O que eu quero é copiar os arquivos (e substituir) para a pasta neste diretório, no entanto, não posso ter certeza de que eles serão abrangidos pelo esquema de nome de pasta acima.

Qual é a melhor maneira de criar um arquivo .sh para copiar tudo de ... / GeneralNetwork / * sem copiar arquivos ocultos, etc? Eu fiz o ../GeneralNetwork/. e incluiu boot, bin, sys etc.

    
por ThisIsNotMyRealName 06.10.2014 / 10:13

1 resposta

2
% bl0ck_qu0te%

Isso é por causa do espaço em branco:

cp é assim:

cp -ra /home/michael/Documents/GeneralNetwork /GNI

Que a pasta: /home/michael/Documents/GeneralNetwork precisa ser copiada para /GNI . Mas não há pasta em /GNI , portanto, o erro.

Se houver um espaço em branco entre os arquivos, coloque-o entre aspas:

"/home/michael/Documents/GeneralNetwork /GNI"

cp está vendo:

/home/michael/Documents/GeneralNetwork

Com aspas, ele será lido além dos espaços em branco:

cp -ra "/home/michael/Documents/GeneralNetwork /GNI" /home/michael/Dropbox/NetworkData

Por solicitação do usuário :

Se eu entendi corretamente, você deseja copiar /home/michael/Documents/GeneralNetwork

e tudo nele. Sim, isso é possível, assim:

cp -ra "/home/michael/Documents/GeneralNetwork /*.*" /home/michael/Dropbox/NetworkData
    
por blade19899 06.10.2014 / 10:29