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

如何在Fish Shell中实现Bash里`ls [G-S]*`的文件匹配功能?

在Fish Shell中实现类似Bash的[G-S]*富通配功能

好问题!Fish Shell的通配语法和Bash确实存在差异,要实现你需要的「列出所有以G至S、g至s开头的文件」需求,有两种实用的方式:

方式一:使用大括号范围展开(最直观)

Fish原生支持字符范围的大括号展开,直接写出大小写的范围即可:

ls {G..S}* {g..s}*

这里的{G..S}会自动展开为从G到S的所有大写字母(G、H、I……S),{g..s}则对应小写的g到s字符。加上*就能匹配以这些字符开头的任意文件/目录,完全等价于Bash中ls [G-S]*的效果。

方式二:借助正则表达式匹配

如果你习惯用正则,也可以通过Fish的string命令配合管道来实现:

ls (string match -r '^[G-Sg-s].*' -- *)
  • string match -r表示启用正则匹配模式
  • ^[G-Sg-s].*是正则规则:^匹配开头,[G-Sg-s]指定大小写的字符范围,.*匹配后续任意内容
  • -- *表示把当前目录下的所有文件/目录作为匹配对象,最后将匹配结果传递给ls命令

需要注意的是,Fish默认的通配语法不支持Bash那种[G-S]的字符范围写法,所以必须用上面两种方式来替代。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:45:59