我有一个包含备份文件列表的数组,我想通过并删除前导/ path / to / file /和尾随_date_stamp.tar.gz我的代码可以去除前导路径文件,如果我把它设置为剥离.tar.gz它可以工作,但如果我试图剥离它失败的日期。所以我想作为一个例子:
/path/to/file/backup_domain1.com_02_16_2015.tar.gz
并留下:
domain1.com
从开头删除:/path/to/file/backup_
这从末尾删除:_02_16_2015.tar.gz
但显然因为它们是日期戳,所以整数会有所不同。
我的代码段:
# strip leading path/to/file :
$bubasedir=/path/to/file
buarray=( "${buarray[@]#"$bubasedir/backup_"}" )
buarray=( "${buarray[@]%".tar.gz"}" )
这会剥离.tar.gz
,但我也需要删除日期。
答案 0 :(得分:4)
使用与日期表达式匹配的表达式,就像对前缀一样。假设域名不能包含下划线(根据DNS规范,但有时违反内部域和特殊域名,如_dkim
),
buarray=( "${buarray[@]%%_*}" )
%%
表示要修剪最长的匹配,_*
匹配从下划线开始的所有内容。 ("${buarray[@]%_*}"
将从最后一个下划线修剪。)