我正在尝试自动执行数据库刷新,但是现在我陷入了尝试提取转储文件文件名以将其与 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/')