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

Shell中能否用(A|B)语法实现文件名的或选择扩展?

Shell文件名的“或选择”扩展技巧

嘿,这个问题问到点子上了!日常处理文件时经常会遇到这种需求,我给你梳理两种实用的解决方式:

一、最直接的方式:大括号扩展(Brace Expansion)

Bash默认就支持这种语法,完全能满足你“仅操作指定几个文件”的需求。比如你想同时处理file1.txt和file5.txt,直接写:

cat file{1,5}.txt

大括号里用逗号分隔不同的文件名部分,Shell会自动把它展开成cat file1.txt file5.txt,和你想要的file(1|5).txt效果完全一样。这种方式简单省心,不需要额外配置,是日常用得最多的技巧。

二、更接近grep风格的扩展:extglob扩展

如果你偏爱类似grep中(A|B)的语法,可以开启Bash的extglob扩展功能。步骤很简单:

  1. 先开启扩展(临时生效,重启Shell后会恢复):
shopt -s extglob
  1. 之后就能用类似的“或选择”语法了,比如:
cat file@(1|5).txt

这里的@(pattern1|pattern2)就表示匹配括号里的任意一个模式,和grep的(A|B)逻辑一致。如果是脚本里要用,记得把开启extglob的命令写在脚本开头哦。

另外补充一句:如果用的是Zsh,默认就支持更灵活的文件名扩展,类似file(1|5).txt的写法直接就能用,不需要额外开启配置~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:40:30