首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何检查文件名是否符合模式?

如何检查文件名是否符合模式?
EN

Unix & Linux用户
提问于 2014-01-28 14:42:31
回答 1查看 2.7K关注 0票数 2

我的任务是编写一个shell脚本,该脚本检查文件名是否符合特定的模式,我不知道如何执行。

文件名应该遵循如下模式:

代码语言:javascript
运行
复制
(Project-ID)_(Env)_(Source-System-ID)_(DataDescriptor)_(CCYYMMDD)_(Seq)_(Freeformat)_(codepage)
  • Project_ID应该是字母数字,在3-8个字符之间.
  • Env应由3个字符代码(DEV、SYT、SIT、UAT或PRD)组成。
  • 源-System-ID应该是一个可变的数字。
  • DataDescriptor应该是字母数字的,如CUST
  • CCYYMMDD应为CCYYMMDD格式的日期
  • Seq应该是一个数字,如01,02,03等。
  • 免费格式应该是字母数字格式-用于提供文件名附加说明。
  • 代码页应该表示文件扩展名,如.ascii或.EBCDIC。

示例文件可能如下所示:

代码语言:javascript
运行
复制
ABC_PRD_00227_ACC_20130128_01_LTSB.CP1252

如果文件不符合模式,那么如果可以显示某种警告,那就更好了。

EN

回答 1

Unix & Linux用户

发布于 2014-01-28 16:07:21

今天我的find-fu很弱,所以我无法接受使用- regex /-iregex和不同的-regextype选项的regex。

这个有点慢,但希望能帮到你:

代码语言:javascript
运行
复制
$ find . -maxdepth 1 -type f | grep -P '[[:alnum:]]{3,8}_(DEV|SYT|SIT|UAT|PRD)_\d+_[[:alnum:]]+_\d\d\d\d[0-1]\d[0-3]\d_\d\d_[[:alnum:]]+\.[[:alnum:]]+'

./ABC_PRD_00227_ACC_20130128_01_LTSB.CP1252

假设您希望找到与模式不匹配的文件,只需将-v开关添加到grep。

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

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

复制
相关文章

相似问题

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