如何使用变量和星号打印正则表达式匹配项列表

问题描述 投票:0回答:1

我有此文件列表:

perspectium-02-16-2019-1.log.gz  perspectium-07-27-2019-3.log.gz  perspectium-10-18-2019-1.log.gz
perspectium-07-27-2019-1.log.gz  perspectium-10-16-2019-1.log.gz  perspectium-10-18-2019-2.log.gz
perspectium-07-27-2019-2.log.gz  perspectium-10-17-2019-1.log.gz  perspectium-10-18-2019-3.log.gz

我计算了一个日期:

d=$(date -d '-1 day' '+%m-%d-%Y') 

我要删除符合条件的那些文件:

perspectium-$d-*.log.gz

但是,如果我对此做出回应,它将按字面意义打印星号,因此它将不匹配任何文件:

perspectium-10-17-2019-*.log.gz

您能给我一些线索吗?感谢您的建议。

bash asterisk glob
1个回答
0
投票

您可以使用以下内容:

output=`ls perspectium-$d-*.log.gz`
echo $output

for file in perspectium-$d-*.log.gz
do
echo $file
done;

或只是不加引号:

echo perspectium-$d-*.log.gz

但是,正如已经说过的,要注意匹配不正确的可能问题。

这里为您输出情况:

[root@pro-sip tmp]# d=10-18-2019
[root@pro-sip tmp]# ls perspectium-$d-*.log.gz
perspectium-10-18-2019-1.log.gz  perspectium-10-18-2019-2.log.gz
[root@pro-sip tmp]# for i in  perspectium-$d-*.log.gz  
> do
> echo $i
> done;
perspectium-10-18-2019-1.log.gz
perspectium-10-18-2019-2.log.gz
[root@pro-sip tmp]# echo perspectium-$d-*.log.gz
perspectium-10-18-2019-1.log.gz perspectium-10-18-2019-2.log.gz
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.