0

我在 git bash (windows) 上运行以下命令

paste --delimiter=\\n --serial src/libs/**/*[^.spec].js > test.js

与商店:

globstar on
extglob on

这成功地从 src/libs 递归地连接所有 js 文件,除了从终端执行时的所有 *.spec.js 文件。

但是,当我通过 grunt-shell ( https://github.com/sindresorhus/grunt-shell ) 运行此命令时,它也可以工作,但是: [^.spec] 被忽略。意味着我所有的 *.spec.js 文件也进入了 test.js。

4

1 回答 1

1

对于 extglob(和 globstar),以下语法是正确的,其他[^..]是负字符集。

paste --delimiter=\\n --serial src/libs/**/!(*.spec).js > test.js

否则可以用 find 来完成

find src/libs -name '*.js' ! -name '*.spec.js' -exec paste --delimiter='\n' --serial {} + > test.js

有什么区别吗

find src/libs ! -name '*.spec.js' -name '*.js' -exec cat {} + > test.js
于 2017-06-29T13:30:17.797 回答