Вы установили программу , а не зависимость . Имя пакета _RPM указывает зависимость от sqlite RPM , а не от sqlite программы .
Либо установите sqlite RPM (после удаления вручную -установленного ), либо скажите RPM игнорировать зависимости при установке имени пакета _:rpm -i --nodeps package_name.rpm
.
Предполагая, что это настоящие файлы в вашей системе, вы можете легко извлечь часть перед первым _
в именах файлов каждого файла, соответствующего *_*.tar.tgz
в каталоге /dbfs/mnt/dlg2stage/foldername/backupname
, используя цикл оболочки:
for pathname in /dbfs/mnt/dlg2stage/foldername/backupname/*_*.tar.tgz; do
name=$( basename "$pathname" )
printf '%s\n' "${name%%_*}"
done
Утилита basename
даст вам часть пути к имени файла. Учитывая пример, который вы показываете, это назначит строку 201906_load_1_20210623-151602.tar.tgz
переменной name
. Вы также могли бы использовать name=${pathname##*/}
, чтобы сделать то же самое (это расширение параметра удаляет начальный раздел строки в $pathname
, вплоть до последнего/
)включительно.
Расширение параметра ${name%%_*}
приведет к удалению из значения $name
самой длинной конечной подстроки, соответствующей _*
. В показанном примере это удалит первый символ _
и все, что находится справа от него, оставив подстроку 201906
, которая затем будет напечатана с использованием printf
.
Я думаю, вы просто хотите напечатать 201906
по этой строке пути. В этом примере эти шесть цифр — это:первые шесть цифр, перед которыми стоит косая черта .
Я помещаю путь в переменную, чтобы упростить чтение команды:
% path_str='/dbfs/mnt/dlg2stage/foldername/backupname/201906_load_1_20210623-151602.tar.tgz'
% echo $path_str | sed 's/.*\/\([0-9]\{6\}\).*/\1/'
201906
Вот как я построил это совпадение и замену в sed:
\/[0-9]\{6\}
:соответствует косой черте и 6 цифрам \/\([0-9]\{6\}\)
:то же самое, но теперь в группе захвата или подвыражении (косая черта отсутствует в группе захвата).*\/\([0-9]\{6\}\).*
:соответствует всему, что было до и после, так что... вся строка\1
:с совпадением всей строки, используйте ссылку для первой(и единственной группы захвата ), чтобы заменить всю строку только первыми 6 цифрами