使用Linux Shell正则表达式匹配文件名
发布时间:2021-01-11 08:23:07 所属栏目:Linux 来源:互联网
导读:我需要一种方法来匹配目录中的文件名. 例如,我有三个文件: CAt_DoG_ZebRa.TXTMOUSE_lion_deer_BIRD.TXTfIsh_biRD_LION.TXT 我不是任何正则表达式专家,但我之前在SnapLogic和Pentaho中使用过类似的东西: (?i).*(?=.*bird)(?=.*lion).*.TXT 上面的内容将匹配
|
我需要一种方法来匹配目录中的文件名. 例如,我有三个文件: CAt_DoG_ZebRa.TXT MOUSE_lion_deer_BIRD.TXT fIsh_biRD_LION.TXT 我不是任何正则表达式专家,但我之前在SnapLogic和Pentaho中使用过类似的东西: (?i).*(?=.*bird)(?=.*lion).*.TXT 上面的内容将匹配包含单词’bird’和’lion’的所有文件名,其中case被忽略,单词的顺序无关紧要.很强大!所以它会匹配这两个: MOUSE_lion_deer_BIRD.TXT fIsh_biRD_LION.TXT 我尝试了上面的很多变化与find和grep一起无济于事.例如: find . -regex ".*/(?i).*(?=.*bird)(?=.*lion).*.TXT" 以上查找与任何内容都不匹配. 谁能推荐一种方法来做到这一点? 解决方法# ls asdafsdfdBirdasfdfd.txt dasdbirdbfdgdlionb.txt fgdfLionqweBirdaqw.txt # ls | /usr/gnu/bin/grep -i -E '.*(bird.*lion|lion.*bird).*.txt' dasdbirdbfdgdlionb.txt fgdfLionqweBirdaqw.txt 一个技巧:当你使用向前看或者向后看写一些正则表达式时,怀疑它,并且要么改变另一种方式来编写它,要么考虑正则表达式是否适合这个问题的工具. (编辑:吉安站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- linux – 什么是活动内存和非活动内存[已关闭]
- linux – bash fork错误(资源暂时不可用)不会停止,并且每次
- linux-device-driver – add_disk()在insmod上挂起
- linux – nohup如何工作?
- linux – 从grep输出中删除字符
- linux – iwlist()命令如何扫描无线网络?
- linux文件夹中的文件所有者列表
- linux – 为什么`ls`每行列出多个文件,但`ls pipe / redire
- 如何防止Tmux用重复的路径填满全局PATH变量?
- linux – 在Ubuntu服务器12.04.4上编译Node.js v0.11.12-re
