提取转储文件 文件名

提取转储文件 文件名

我正在尝试自动执行数据库刷新,但是现在我陷入了尝试提取转储文件文件名以将其与 IMPDP 命令一起使用的部分。

问题是我们使用这个参数进行导出:

dumpfile=dbname_env_date_%u.dmp 和 16 度并行度,这将创建 16 个文件,如下所示:

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

我想做的就是提取这个“dbname_env_date”,这样我就可以在导入另一个环境数据库时使用该参数。

到目前为止我得到的是这样的:

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

这给了我这样的东西:

dbname_env_date_16.dmp

我希望它以后像这样使用:

imdp \' / as sysdba \' dumpfile=${dump_filename}_u%.dmp

答案1

不需要使用tail,你就知道你得到了全部16个文件。

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

第一行将获取最新文件的名称*_01.dmp,第二行_01.dmp将从名称中删除。第三行追加.dmp.

您还可以使用这个:

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

相关内容