Извлечь имена файлов дампов

Я пытаюсь автоматизировать обновление базы данных, но теперь я застрял в части, пытающейся извлечь имя файла с файлами дампов, чтобы использовать его с командой IMPDP.

Дело в том, что мы используем этот параметр для экспорта:

dumpfile = dbname_env_date_% u.dmp и 16-gradleусный параллелизм, который создает 16 файлов, таких как:

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

То, что я пытаюсь сделать, это просто извлечь это «dbname_env_date», чтобы я мог использовать этот параметр при импорте в другую базу данных env.

Что у меня так далеко, это:

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

что дает мне что-то вроде этого:

 dbname_env_date_16.dmp 

и я хочу использовать его позже так:

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

One Solution collect form web for “Извлечь имена файлов дампов”

Нет необходимости использовать хвост, вы знаете, что вы получите все 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/') 
  • Ускорить сценарий, который определяет, все ли столбцы в строке одинаковы или нет
  • Linux и Unix - лучшая ОС в мире.