如何使用Bash扩展模式匹配当前目录和其中一个子目录中的文件

如何使用Bash扩展模式匹配当前目录和其中一个子目录中的文件,bash,pattern-matching,glob,Bash,Pattern Matching,Glob,例如,以下目录结构: $ tree . ├── app.js ├── lib │   └── util.js └── test └── main.js 2 directories, 3 files 我想匹配当前目录和lib/目录中的js文件,类似于: $ ls *.js lib/*.js app.js lib/util.js 但是在一个地球上。但事实并非如此: ls @(.|lib)/*.js 有什么想法吗?我怀疑地球仪是否能达到预期的效果。但是,您可以使用: echo {.,

例如,以下目录结构:

$ tree
.
├── app.js
├── lib
│   └── util.js
└── test
    └── main.js

2 directories, 3 files
我想匹配当前目录和
lib/
目录中的js文件,类似于:

$ ls *.js lib/*.js
app.js  lib/util.js
但是在一个地球上。但事实并非如此:

ls @(.|lib)/*.js
有什么想法吗?

我怀疑地球仪是否能达到预期的效果。但是,您可以使用:

echo {.,lib}/*.js

这很有效。我甚至可以将
ls{*,lib/***}.js
globstar
一起使用,以递归方式列出子目录中的所有文件。@realgue是
ls{*,lib/***}.js
相当于说
ls*.js lib/***.js