加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式 – 如何循环遍历unix shell脚本中与正则表达式匹配的

发布时间:2020-12-14 05:56:17 所属栏目:百科 来源:网络整理
导读:我希望能够循环遍历与特定模式匹配的文件列表.我可以让unix使用带有正则表达式的ls和egrep列出这些文件,但我找不到将其转换为迭代过程的方法.我怀疑使用ls不是答案.我们将非常感激地提供任何帮助. 我当前的ls命令如下所示: ls | egrep -i 'MYFILE[0-9][0-9]
我希望能够循环遍历与特定模式匹配的文件列表.我可以让unix使用带有正则表达式的ls和egrep列出这些文件,但我找不到将其转换为迭代过程的方法.我怀疑使用ls不是答案.我们将非常感激地提供任何帮助.

我当前的ls命令如下所示:

ls | egrep -i 'MYFILE[0-9][0-9]([0][1-9]|1[0-2])([0][1-9]|[12][0-9]|[3][01]).dat'

我希望上面的内容匹配:

> MYFILE160418.dat
> myFILE170312.DAT
> MyFiLe160416.DaT

但不是:

> MYOTHERFILE150202.DAT
> Myfile.dat
> myfile.csv

谢谢,

保罗.

解决方法

您可以使用(GNU)find与正则表达式搜索选项,而不是解析ls.

find . -regextype "egrep" 
       -iregex '.*/MYFILE[0-9][0-9]([0][1-9]|1[0-2])([0][1-9]|[12][0-9]|[3][01]).dat' 
       -exec [[whatever you want to do]] {} ;

其中[[您想要做什么]]是您要对文件名称执行的命令.

从手册页

06001

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读