节点glob中的方括号有问题

时间:2018-10-14 13:43:32

标签: javascript node.js glob

我正在使用此软件包node-glob

我面临的问题是,当我的路径中包含方括号[]时,它没有给我任何文件。

这就是我的做法:

const glob = require('glob')

const path = 'E:/files/Example [Folder] 1'
const files = glob.sync(path + '/**/*', { 
  nobrace: true,
  noext: true
})

括号()或花括号{}没问题,方括号[]没问题。

我正在使用Windows。我该如何解决?请帮忙!

1 个答案:

答案 0 :(得分:1)

括号[]具有特殊含义,例如*

  

[...]匹配一个字符范围,类似于RegExp范围。如果范围的第一个字符是!或^,则它匹配不在该范围内的任何字符。

因此,您需要使用\

对其进行转义
const glob = require('glob')

const path = 'E:/files/Example \\[Folder\\] 1'
const files = glob.sync(path + '/**/*', { 
  nobrace: true,
  noext: true
})

但是,在您的情况下,您最喜欢rootcwd

  

cwd当前要搜索的工作目录。默认为process.cwd()

const path = 'E:/files/Example [Folder] 1'
const files = glob.sync('**/*', { 
  nobrace: true,
  noext: true,
  cwd: path
})
  

root将安装以/开头的图案的位置。默认值为path.resolve(options.cwd, "/")(在Unix系统上为/,在Windows下为C:\或类似的东西。)

const path = 'E:/files/Example [Folder] 1'
const files = glob.sync('/**/*', { 
  nobrace: true,
  noext: true,
  root: path
})