首页 > 解决方案 > 在扩展模式匹配运算符中包含路径部分

问题描述

给定以下目录结构,其中所有叶子都是文件,

a
├── b
│   ├── d
│   │   └── f
│   └── e
│       └── g
└── c
    ├── d
    │   └── h
    └── e
        └── i

以下命令列出文件fh

$ ls a/@(b|c)/d/.

但以下未能列出fi

$ ls a/@(b/d|c/e)
ls: cannot access 'a/@(b/d|c/e)': No such file or directory

显然,我不能在pattern-list. 我的问题是一个,但也许把它分成几块更好:

标签: bashpathpattern-matchingglob

解决方案


我的直觉告诉我,文件名扩展可以生成文件名但不能生成路径名。

在这种情况下,您可以使用大括号扩展

ls a/{b/d,c/e}

推荐阅读