如何通过grep正则筛选含大写字母的文件?排除全小写文件名
正确的命令与正则表达式
直接匹配目标文件(推荐)
使用grep匹配文件名中存在的大写字母,命令如下:
find /tmp/MG/virt-manager-5.0.0/ -maxdepth 1 -type f | grep '[A-Z]'
- 原理:
[A-Z]是正则表达式中的字符组,匹配任意一个大写英文字母。只要文件名包含至少一个大写字母,就会被该规则匹配,自然排除了仅由小写字母组成的文件名。
原命令的问题分析
你之前的命令grep -v [^a-z]+\.[^a-z]+存在两个关键问题:
- 正则逻辑错误:
[^a-z]表示匹配非小写字母的字符,整个正则试图匹配“非小写字母序列+点+非小写字母序列”的文件名,再用-v取反,这和你“筛选含大写字母文件”的需求完全偏离。 - 正则语法不兼容:
+是扩展正则的元字符,默认grep使用基础正则,+会被当作普通字符处理,需要添加-E选项才能生效,但即便生效,逻辑依然不符合需求。
内容的提问来源于stack exchange,提问作者elbarna
相关产品推荐
相关产品推荐

