Como criar um script para ler um arquivo e copiar um determinado resultado

1. Como criar um script para ler um arquivo e copiar um determinado resultado

Silvio Aquino
SilviosAquino

(usa Outra)

Enviado em 26/08/2014 - 15:39h

Boa Tarde!
Senhores, gostaria de saber como faço para criar uma script que pesquise em um arquivo .bsr o nome de outro arquivo, ao encontrar copie esse arquivo para uma outro diretório.
Segue o senário:

Existe uma pasta com os seguintes arquivos: /exemplo

1c0f91ce5a60416b90c806be629c399a_procedure.bsr
1c0f91ce5a60416b90c806be629c399a_procedure_pool-vol-0024
1c0f91ce5a60416b90c806be629c399a_procedure_pool-vol-0027
1c0f91ce5a60416b90c806be629c399a_procedure_pool-vol-0029
1c0f91ce5a60416b90c806be629c399a_procedure_pool-vol-0031
1c0f91ce5a60416b90c806be629c399a_procedure_pool-vol-0037
1c0f91ce5a60416b90c806be629c399a_procedure_pool-vol-0039

O arquivo .bsr tem as seguintes informações:

# 14-Aug-2014 22:47:41 - 1c0f91ce5a60416b90c806be629c399a_procedure.2014-08-14_22.00.00_06 - Full (upgraded from Incremental)
Volume="1c0f91ce5a60416b90c806be629c399a_procedure_pool-vol-0027"
MediaType="File"
VolSessionId=31
VolSessionTime=1407054411
VolAddr=0-0
FileIndex=0-0
# 15-Aug-2014 22:00:47 - 1c0f91ce5a60416b90c806be629c399a_procedure.2014-08-15_22.00.00_09 - Incremental, since=2014-08-14 22:00:02
Volume="1c0f91ce5a60416b90c806be629c399a_procedure_pool-vol-0029"
MediaType="File"
VolSessionId=34
VolSessionTime=1407054411
VolAddr=0-0
FileIndex=0-0

Gostaria que o script identifica-se o volume FULL e depois copia-se esse arquivo para um diretório especifico, exemplo: /backup


  


2. Re: Como criar um script para ler um arquivo e copiar um determinado resultado

Fernando
phoemur

(usa Debian)

Enviado em 26/08/2014 - 23:39h

pode fazer assim:
(rode o comando dentro do diretório que contém o arquivo .bsr e os outtros, supondo que é o mesmo diretório)


cp $(sed -n '/Full/{n;s/Volume.*\"\(.*\)\"/\1/p}' 1c0f91ce5a60416b90c806be629c399a_procedure.bsr) /backup


ou assim


sed -n '/Full/{n;s/Volume.*\"\(.*\)\"/\1/p}' 1c0f91ce5a60416b90c806be629c399a_procedure.bsr | xargs -i cp {} /backup


A maior parte das coisas que as pessoas querem fazer scripts ou programas podem ser resolvidas com comandos do shell.


3. Re: Como criar um script para ler um arquivo e copiar um determinado resultado

Silvio Aquino
SilviosAquino

(usa Outra)

Enviado em 27/08/2014 - 11:32h

Olá phoemur obrigado pelo apoio, realizei um teste com as opções que vc passou mais não deu certo, segue a mensagem que aparece:

1º comando:
-bash: /FULL/{n: No such file or directory
-bash: s/Volume.*"(.*)"/1/p}: No such file or directory
sed: can't find label for jump to '46f5394da889ec04828040664_procedure.bsr'
cp: missing destination file operand after '/home/backup'
Try 'cp --help' for more information.

2º comando:
-bash: /FULL/{n: No such file or directory
-bash: s/Volume.*"(.*)"/1/p}: No such file or directory
sed: can't find label for jump to '46f5394da889ec04828040664_procedure.bsr'



Olha eu posso ter me expressado mal, deixa eu tentar novamente.

o senario é o mesmo:

Eu gostaria que o script acessa-se o arquivo .bsr que estar na pasta /exemplo e identifica-se o nome do volume Full: (# 14-Aug-2014 22:47:41 - 1c0f91ce5a60416b90c806be629c399a_procedure.2014-08-14_22.00.00_06 - Full (upgraded from Incremental)== Volume="1c0f91ce5a60416b90c806be629c399a_procedure_pool-vol-0027") e copia-se esse arquivo para uma outra pasta, da pasta /exemplo para a /home/Backup.


4. Re: Como criar um script para ler um arquivo e copiar um determinado resultado

Silvio Aquino
SilviosAquino

(usa Outra)

Enviado em 27/08/2014 - 16:34h

Olá phoemur obrigado pelo apoio, refiz os teste e deu tudo certo do jeito que você passou, muito obrigado.


5. Re: Como criar um script para ler um arquivo e copiar um determinado resultado

Fernando
phoemur

(usa Debian)

Enviado em 27/08/2014 - 19:22h

Disponha, testei aqui e continuou dando certo, experimenta copiar e colar


6. Re: Como criar um script para ler um arquivo e copiar um determinado resultado

Rafael Poletto
polettin

(usa Debian)

Enviado em 04/09/2014 - 09:10h

eu acho que voce pode montar isso com usando if e um comando tipo assim

cat ./<nome do arquivo> | grep FULL > $variavel
if $variavel = FULL
cp <arquivos> <diretorio que quer colocar>
else
echo "O valor não é FULL."
fi


com sed é mais facil porem eu não manjo

e pelo que o poemur colocou e vendo o erro que esta dando no seu, acho que voce não está colocando ' ou "

da uma lida em scripts simples usando if


OBS.: Não sei se escrevi certo a parada do comando, estou afastado de linux :(






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts