bash - 如何使用变量和星号打印正则表达式匹配列表
问题描述
我有这个文件列表:
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
你能给我一些线索吗?谢谢指教。
解决方案
您可以使用以下内容:
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
推荐阅读
- argo-workflows - 如何为 Argo Workflow DAG 中的每个步骤传递不同的参数值
- flexbox - Flexbox、uk-flex-left 和 uk-flex-right
- docusignapi - 签名后 HTML 文档缩小
- hyperledger-fabric - 隐式策略评估失败 - ... 需要满足 1 个“作家”子策略:权限被拒绝
- python - 视频无法在 django 中加载
- java - 平衡二叉搜索树
- flutter - 如何像在 instagram 中一样在颤动中从一个提要转到另一个提要
- java - 如何在spring中运行post配置代码
- javascript - 日期时间根据环境而变化
- c++ - lambda 表达式是合法的默认(非类型模板)参数吗?