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

如何筛选9位a-f/0-9字符文件名?适配ls、grep、find工具

匹配9位十六进制小写文件名的方法

你的需求是匹配长度为9、仅包含a-f小写字母和0-9数字的文件名,下面分别说明ls、grep、find的实现方式,以及规则的适配性:

1. 使用ls筛选

ls依赖shell通配符实现匹配,有两种简洁写法:

  • 直接重复9次字符范围匹配:
    ls [a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9]
    
  • 利用bash的大括号展开功能(默认开启),简化重复写法:
    ls [a-f0-9]{9}
    
    这条命令会被shell自动展开成9个[a-f0-9]的形式,效果和上面完全一致。

2. 适配grep工具

grep使用正则表达式匹配,需要明确限定字符串的首尾(避免匹配更长/更短的包含目标片段的内容):

  • 基础正则写法:
    grep '^[a-f0-9]\{9\}$' 文件名列表
    
    其中^表示行首,$表示行尾,\{9\}指定前面的字符范围重复9次。
  • 扩展正则写法(更简洁):
    grep -E '^[a-f0-9]{9}$' 文件名列表
    
    加-E参数后可以用{9}代替\{9\},语法更直观。

3. 适配find工具

find有两种匹配方式,对应不同的规则:

方式一:用shell通配符(-name选项)

和ls的逻辑一致,直接用大括号展开或重复字符范围:

find . -maxdepth 1 -name '[a-f0-9]{9}'

-maxdepth 1限定只查找当前目录,避免递归子目录(按需去掉)。

方式二:用正则表达式(-regex选项)

find的正则默认是emacs风格,需要匹配完整路径(比如当前目录下的文件会显示为./xxx):

find . -maxdepth 1 -regex './[a-f0-9]\{9\}'

如果想使用扩展正则简化写法,可指定正则类型:

find . -maxdepth 1 -regextype posix-extended -regex './[a-f0-9]{9}'

规则适配说明

  • ls和find的-name选项用的是shell通配符,重复字符的写法依赖shell的大括号展开,和正则表达式语法不同;
  • grep和find的-regex选项用的是正则表达式,重复次数用{n}(扩展正则)或\{n\}(基础正则),语法逻辑统一。

内容的提问来源于stack exchange,提问作者Renat

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 01:15:08