首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >关于for循环和提取部分名称以使用borg create命令的问题

关于for循环和提取部分名称以使用borg create命令的问题
EN

Stack Overflow用户
提问于 2019-05-13 00:49:48
回答 1查看 77关注 0票数 0

我有一个名为sync的文件夹,其中包含如下文件:

代码语言:javascript
复制
vzdump-lxc-101-2018_06_07-02_23_11.tar
vzdump-lxc-101-2018_07_20-03_04_22.tar
vzdump-lxc-101-2018_08_17-03_34_11.tar
vzdump-lxc-101-2018_09_17-02_44_50.tar
vzdump-lxc-101-2019_01_19-00_16_02.tar
...
vzdump-lxc-104-2018_06_30-01_50_23.tar
vzdump-lxc-104-2018_07_20-03_18_56.tar
vzdump-lxc-104-2018_08_17-03_40_15.tar
vzdump-lxc-104-2018_10_19-01_52_00.tar
vzdump-lxc-104-2018_11_06-02_39_07.tar
vzdump-lxc-104-2019_01_19-00_24_14.tar

范围从vzdump-lxc-100到vzdump-lxc-1xx等。

我尝试遍历给定目录中的所有文件,并执行borg create (...) /path/to/repo::vzdump-lxc-$ID-$year_$month_$day "$f“,但我不确定如何将名称减少到以下三点

我用下面的代码测试了一下:for f in vzdump-lxc*; do borg create (...) /path/to/repo::srv01_lxc_"$f" "$f";done,但是这给我的全名太长了,包括前导的vzdump-lxc,小时,分钟,秒和扩展名也许有人可以把我引向正确的方向。

我正在尝试实现/path/to/repo::srv01_lxc_$id_$year_$month_$day

干杯

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-13 01:04:17

您可以使用'._-'作为输入字段分隔符来拆分该名称。如下所示:

代码语言:javascript
复制
IFS='-_.' read -ra path <<< vzdump-lxc-104-2019_01_19-00_24_14.tar
echo ${path[*]}
vzdump lxc 104 2019 01 19 00 24 14 tar

上面的代码创建了一个拆分了所有组件的数组path。在此之后,您可以通过引用其索引来使用它们中的任何一个:

代码语言:javascript
复制
echo ${path[3]}
2019

考虑到这一点,您的代码可能如下所示:

代码语言:javascript
复制
for f in vzdump-lxc*; do
    IFS='-_.' read -ra p <<< $f 
    borg create (...) /path/to/repo::srv01_lxc_${p[2]}-${p[3]}-${p[4]}-${p[5]} "$f"
done

我希望这能有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56101415

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档