Extrair nomes de arquivos de arquivos de despejo

0

Estou tentando automatizar uma atualização de banco de dados, mas agora estou preso a uma parte que tenta extrair o nome do arquivo de arquivos de despejo para usá-lo com o comando IMPDP.

O problema é que usamos esse parâmetro fazendo a exportação:

dumpfile = dbname_env_date_% u.dmp e um paralelismo de 16 graus, que cria 16 arquivos como este:

dbname_env_date_01.dmp
dbname_env_date_02.dmp
.
.
.
dbname_env_date_16.dmp

O que eu estou tentando fazer é apenas extrair este "dbname_env_date", para que eu possa usar esse parâmetro ao importar para outro banco de dados env.

O que eu tenho até agora é isso:

dump_filename=$(ls -tr *.dmp | tail -1)

que me dá algo assim:

dbname_env_date_16.dmp

e eu quero usar mais tarde assim:

imdp \' / as sysdba \' dumpfile=${dump_filename}_u%.dmp
    
por Eduardo Santiago López 21.08.2018 / 19:29

1 resposta

0

Não é necessário usar o tail, você sabe que obtém todos os 16 arquivos.

dump_filename=$(ls -t *_01.dmp | head -n 1)
dump_filename=${dump_filename%_01.dmp}
dump_filename="$dump_filename.dmp"

A primeira linha receberá o nome do arquivo mais recente *_01.dmp , a segunda linha removerá o _01.dmp do nome. A terceira linha acrescenta .dmp .

Você também pode usar isto:

dump_filename=$(ls -t *_01.dmp | head -n 1 | sed -e 's/_01\.dmp/.dmp/')
    
por 21.08.2018 / 19:36