You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用单个正则表达式让find精准筛选不含点和减号的10字符文件名

解决方案

最终可用命令

直接使用以下find命令即可实现需求,无需额外管道处理:

find /path/to/your/subdir -regextype sed -regex '.*\/[^[:upper:].-]\{10\}$'

正则规则拆解

这个正则精准匹配符合要求的文件,各部分作用如下:

  • .*\/:匹配任意层级的目录路径(包含当前目录的./前缀),确保不会被目录名中的点或减号干扰
  • [^[:upper:].-]:定义允许的字符集——非大写字母、非点号、非减号,等价于仅允许数字、小写字母,以及除.和-之外的标点符号
  • \{10\}:强制匹配恰好10个符合上述规则的字符(sed正则属于BRE,大括号需转义)
  • $:锚定路径结尾,确保整个文件名刚好是10个字符,避免匹配带后缀的合法文件

匹配验证

针对你提供的测试数据:

  • 需匹配项(前4个):均为10字符,不含.和-,完全符合正则规则,会被命中
  • 需忽略项(后3个):
    • 07-709.pdf:包含-和.,不属于允许的字符集
    • 3023-7.pdf、18099.docx:文件名长度不足10,不满足\{10\}的强制要求
      因此均不会被匹配

内容的提问来源于stack exchange,提问作者Troublemaker-DV

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 13:01:04