首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用扩展的花括号进行grep?

如何使用扩展的花括号进行grep?
EN

Stack Overflow用户
提问于 2020-03-25 11:02:23
回答 2查看 269关注 0票数 1

我有一个命名为yyyyMMdd的文件列表。我想要除几个日期外的文件清单。为此,我使用以下命令

代码语言:javascript
复制
$ ls | grep -ve 202003{04,11,23}
grep: 20200311: Is a directory
grep: 20200323: Is a directory

只有当我手动展开大括号,并将选项-e放在中间以使其间距时,该命令才有效。

代码语言:javascript
复制
ls | grep -v -e 20200304 -e 20200311 -e 20200323

什么是更有效的方式呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-03-25 11:06:54

你不能像你想要的那样用shell展开来做这件事,因为它会用多个单独的参数替换你的单个参数(如果且仅当存在与模式匹配的文件或目录时-如果没有匹配,其他不希望发生的事情可能会发生)。但是,grep的参数是正则表达式。使用扩展正则表达式( -E标志)可以做到这一点。

代码语言:javascript
复制
$ ls | grep -vEe "202003(04|11|23)"

请注意,您不需要为单个搜索参数使用-e,因此

代码语言:javascript
复制
$ ls | grep -vE "202003(04|11|23)"

也是有效的。

票数 4
EN

Stack Overflow用户

发布于 2020-03-25 11:08:15

你可能需要这个:ls | grep -vP "202003(04|11|23)"

如果-P不起作用,请尝试用-E替换它。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60842428

复制
相关文章

相似问题

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