如何用Glob匹配src目录及其子目录下所有.tsx文件?
匹配src目录及其所有子目录下的.tsx文件的Glob模式
给定文件结构:
A.tsx B.tsx dist/C.tsx dist/D.tsx src/E.tsx src/F.tsx src/G.js src/component/H.tsx src/component/I.tsx src/component/J.js
需要列出src目录及其所有子目录下的所有.tsx文件,但现有命令存在局限:
ls src/*.tsx:仅匹配src根目录下的.tsx文件,不包含子目录内容ls src/**/*.tsx:仅匹配src子目录下的.tsx文件,不包含src目录本身的文件
可行方案
1. 合并两个Glob模式
直接在命令中同时指定两个模式,用空格分隔,一次性覆盖两种场景:
ls src/*.tsx src/**/*.tsx
2. 使用花括号展开简化写法
利用shell的花括号展开特性,将两个模式合并为一个更简洁的写法:
ls src/{,**/}*.tsx
这个写法等价于src/*.tsx + src/**/*.tsx,能同时匹配src根目录和所有子目录下的.tsx文件。
3. 用find命令替代(跨平台更可靠)
如果需要跨不同shell环境,find命令是更稳妥的选择,它会递归遍历src目录并筛选目标文件:
find src -name "*.tsx"
注:如果使用bash,需要确保
globstar选项已开启(执行shopt -s globstar),**才能递归匹配子目录;zsh默认支持globstar,无需额外配置。
内容的提问来源于stack exchange,提问作者RobertAKARobin
相关产品推荐
相关产品推荐

