Globs & NPM Minimatch:递归匹配除特定目录外的所有文件和目录

Globs & NPM Minimatch: Match all files and directories recursively except for specific directories

给定目录结构:

/Users/doge/very/amaze.js
/usr/local/bin/wow
/node_modules/
/css/
/css/somefile.css
/lib/
/somelib/
/anotherlib/somedir/finallib.js
/index.html
/somefile.test
/somelib/file.html
/firstdir/seconddir/file.css
/node_modules.txt

如何使用 extglob 只排除 node_modules 目录?

/!(node_modules)

以上匹配根级别的所有内容,但 node_modules 目录和文本文件(我们想要包含)除外。它也不会递归地跟踪匹配的目录。

/!(node_modules)/**

这个更接近,但它也排除了根目录中的所有文件。即使它包含根级别的文件,我猜它也会排除 node_modules.txt 文件。

P.S。这是用于使用 grunt-ssh and minimatch 节点模块进行文件匹配。

这个可以解决你的问题:/!(node_modules){,/**}