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

前端之家收集整理的这篇文章主要介绍了正则表达式 – 如何循环遍历unix shell脚本中与正则表达式匹配的文件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我希望能够循环遍历与特定模式匹配的文件列表.我可以让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

猜你在找的正则表达式相关文章