首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >FileName中包含特定日期范围内日期的Grep多个文件

FileName中包含特定日期范围内日期的Grep多个文件
EN

Unix & Linux用户
提问于 2018-08-22 21:10:21
回答 2查看 2.5K关注 0票数 0

我有一堆文件名为"Logger.2018-08-04_23:59:59.csv“,我想一次将其中一堆文件重新分配,但只在特定的日期范围内,例如8/04-8/17。我怎么能做到这一点?

我试过:

代码语言:javascript
运行
复制
grep "string" Logger.2018-08-[04-17]*.csv 

但这是8/2的结果,而不是8/13-8/17的结果。

代码语言:javascript
运行
复制
grep "string" Logger.2018-08-0[4-9]*.csv Logger.2018.08-1[0-7]*.csv

这是可行的,但有更好的方法来延长日期范围,这样我就不必每次需要增加第一个数字时都要添加文件块了吗?

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2018-08-22 22:18:48

您可以使用find与正则表达式的组合,将候选文件缩小到所需的日期范围,然后将结果传递到grep。调整偏执中包含的正则表达式的部分,以更改日期范围。示例:

代码语言:javascript
运行
复制
$find . -type f -regextype posix-extended -regex '.*Logger.2018-08-((0[4-9])|(1[0-7])){1}.*' -exec grep -l text '{}' \; | sort -n -t- -k3

./Logger.2018-08-04_23:59:59.csv
./Logger.2018-08-05_23:59:59.csv
./Logger.2018-08-06_23:59:59.csv
./Logger.2018-08-07_23:59:59.csv
./Logger.2018-08-08_23:59:59.csv
./Logger.2018-08-09_23:59:59.csv
./Logger.2018-08-10_23:59:59.csv
./Logger.2018-08-11_23:59:59.csv
./Logger.2018-08-12_23:59:59.csv
./Logger.2018-08-13_23:59:59.csv
./Logger.2018-08-14_23:59:59.csv
./Logger.2018-08-15_23:59:59.csv
./Logger.2018-08-16_23:59:59.csv
./Logger.2018-08-17_23:59:59.csv

在本例中,我使用grep的"-l“选项来列出结果文件,而不是虚拟文本,以表明它确实将grep限制在您想要的文件上。要实际查看grep文本行,请删除"-l“。我还添加了一个额外的管道来排序,以使输出变得漂亮。

PS我发现网站regex101对玩和学习regex很有价值。

票数 0
EN

Unix & Linux用户

发布于 2018-08-22 21:29:49

你有“扩展模式匹配”的bash吗?试一试

代码语言:javascript
运行
复制
shopt -s extglob
ls -la Logger.2018-08-@(0[4-9]|1[0-7])*.csv 
票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/464240

复制
相关文章

相似问题

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