首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >删除(取消链接)与正则表达式匹配的文件

删除(取消链接)与正则表达式匹配的文件
EN

Stack Overflow用户
提问于 2013-02-17 11:43:23
回答 4查看 20.8K关注 0票数 34

我想从一个目录中删除几个匹配正则表达式的文件。如下所示:

// WARNING: not real code
require('fs').unlink(/script\.\d+\.js$/);

由于unlink不支持正则表达式,所以我改用下面的代码:

var fs = require('fs');

fs.readdir('.', (error, files) => {
    if (error) throw error;

    files.filter(name => /script\.\d+\.js$/.test(name)).forEach(fs.unlink);
});

这是可行的,但是IMO比它应该要复杂一点。

有没有更好的内置方法来删除匹配正则表达式的文件(甚至使用通配符)?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-02-17 22:30:28

您可以查看glob https://npmjs.org/package/glob

require("glob").glob("*.txt", function (er, files) { ... });
//or
files = require("glob").globSync("*.txt");

glob在内部使用minimatch。它的工作原理是将glob表达式转换为JavaScript RegExp对象。https://github.com/isaacs/minimatch

您可以在回调中对匹配的文件执行任何操作(如果是globSync,则为返回的对象)。

票数 11
EN

Stack Overflow用户

发布于 2019-02-19 08:47:57

不,Node库中没有globbing。如果你不想从NPM中引入一些东西,那么不用担心,只需要一行代码。但在我的测试中,其他答案中提供的代码大多不起作用。所以这是我的代码片段,经过测试,工作正常,纯原生Node和JS。

let fs = require('fs')
const path = './somedirectory/'
let regex = /[.]txt$/
fs.readdirSync(path)
    .filter(f => regex.test(f))
    .map(f => fs.unlinkSync(path + f))
票数 25
EN

Stack Overflow用户

发布于 2017-01-10 22:54:33

我有一个非常简单的解决方案来做到这一点。使用fs.readdir接口读取node.js中的目录。这将给出目录中所有文件的数组。获得该数组后,使用for循环对其进行迭代,然后应用regex。下面的代码将删除所有以"en“开头和扩展名".js”的文件

fs.readdir('.', (err, files)=>{
   for (var i = 0, len = files.length; i < len; i++) {
      var match = files[i].match(/en.*.js/);
      if(match !== null)
          fs.unlink(match[0]);
   }
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14917757

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档