首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有两个或多个日期范围的文件名的bash表达式

具有两个或多个日期范围的文件名的bash表达式
EN

Stack Overflow用户
提问于 2015-02-05 18:06:33
回答 1查看 36关注 0票数 0

我试图在unix中对一组日志文件执行操作。操作复制。

假设我想将上周的日志文件(1月25日至31日)从当前目录复制到另一个目录,这些文件的名称如下:

代码语言:javascript
复制
 log-20150125, log-20150126, ..., log-20150131

我在bash尝试了以下几种方法:

代码语言:javascript
复制
 cp (log-201501)|2[5-9]|3[0-1]*.gz /home/user/bin/Temp

并得到一个错误,上面写着“语法错误接近意外令牌日志-201501”。

我想我做错了什么。捕获两个日期范围的表达式是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-05 19:08:55

Bash有很多语法,所以您不能只在willy-nilly周围乱扔括号和管道。

代码语言:javascript
复制
shopt -s extglob
cp log-201501@(2[6-9]|3[0-1])*.gz /home/user/bin/Temp

请参阅https://www.gnu.org/software/bash/manual/bashref.html#Pattern-Matching

如果太难理解的话,就分头行动

代码语言:javascript
复制
cp log-2015012[6-9]*.gz log-2015013[0-1]*.gz /home/user/bin/Temp

或者大括号扩展的可读性很好

代码语言:javascript
复制
cp log-201501{26,27,28,29,30,31}*.gz /home/user/bin/Temp
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28350992

复制
相关文章

相似问题

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