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

cra*_*irk 5 bash glob node.js minimatch grunt-ssh

给定目录结构:

/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
Run Code Online (Sandbox Code Playgroud)

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

/!(node_modules)
Run Code Online (Sandbox Code Playgroud)

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

/!(node_modules)/**
Run Code Online (Sandbox Code Playgroud)

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

PS 这是使用grunt-sshminimatch节点模块进行文件匹配。

Che*_*hao 4

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