`

Nodejs实现VScode搜索功能,递归读取文件夹匹配内容

阅读更多

VScode搜索功能图示:

 

 

关键点:读取目录文件夹,判断是否文件夹,若是递归继续读取,否则通过正则或普通匹配关键词。

               统计唯一文件名数量,统计总搜索记录数量累加,展示结果。

 

Core code:

const fs = require('fs');
const path = require('path');

// const basePath = path.resolve('src');
// const matchFile = /\.(jsx?|css)$/;
const basePath = path.normalize('D:\\Dev\\xxx\\src\\main\\webapp');
const matchFile = /\.(jsp?|css)$/;
const searchWord = /\/assetWithdraw\/.*?\.html/img;
const matchList = {};
let fileCount = 0;

const isDirectory = source => fs.lstatSync(source).isDirectory();
const getDirectories = source =>
  fs.readdirSync(source).map(fileName => {
    const newPath = path.join(source, fileName);
    if (isDirectory(newPath)) {
      getDirectories(newPath);
    } else {
      if (matchFile.test(fileName)) {
        const contents = fs.readFileSync(newPath, 'utf8');
        let matchs = contents.match(searchWord);
        if (matchs) {
          fileCount += 1;
          matchs.map(v => {
            matchList[newPath] = (matchList[newPath] || 0) + 1;
          });
        }
      }
    }
  });

getDirectories(basePath);

const sortList = Object.keys(matchList);
console.log(`Stat: ${Object.values(matchList).reduce((a,b) => a+b, 0)} results in ${fileCount} files (Unique of ${sortList.length})\n`);
console.log(sortList.map((v, i) => `${i+1}, ${v} (${matchList[v]})`).join('\n'));

 

搜索结果print:

Stat: 179 results in 65 files (Unique of 65)

1, D:xxx.js (1)
2, D:xxx.js (6)
3, D:xxx.js (1)
4, D:xxx.js (3)
5, D:xxx.js (4)
6, D:xxx.js (1)
7, D:xxx.js (2)
8, D:xxx.js (1)
9, D:xxx.js (1)
10, D:xxx.js (2)
11, D:xxx.js (2)
12, D:xxx.js (2)
13, D:xxx.js (5)
14, D:xxx.js (1)
15, D:xxx.js (2)
16, D:xxx.js (1)
17, D:xxx.js (4)
18, D:xxx.js (2)
19, D:xxx.js (1)
20, D:xxx.js (1)
21, D:xxx.js (1)
22, D:xxx.js (1)
23, D:xxx.js (2)
24, D:xxx.js (7)
25, D:xxx.js (1)
26, D:xxx.js (2)
27, D:xxx.js (1)
28, D:xxx.js (4)
29, D:xxx.js (2)
30, D:xxx.js (1)
31, D:xxx.js (1)
32, D:xxx.js (1)
33, D:xxx.js (1)
34, D:xxx.js (2)
35, D:xxx.js (7)
36, D:xxx.js (1)
37, D:xxx.js (2)
38, D:xxx.js (1)
39, D:xxx.js (4)
40, D:xxx.js (2)
41, D:xxx.js (1)
42, D:xxx.js (1)
43, D:xxx.js (1)
44, D:xxx.js (1)
45, D:xxx.js (2)
46, D:xxx.js (6)
47, D:xxx.js (13)
48, D:xxx.js (3)
49, D:xxx.js (3)
50, D:xxx.js (1)
51, D:xxx.js (4)
52, D:xxx.js (1)
53, D:xxx.js (3)
54, D:xxx.js (3)
55, D:xxx.js (13)
56, D:xxx.js (3)
57, D:xxx.js (3)
58, D:xxx.js (13)
59, D:xxx.js (3)
60, D:xxx.js (3)
61, D:xxx.js (3)
62, D:xxx.js (1)
63, D:xxx.js (4)
64, D:xxx.js (1)
65, D:xxx.js (2)

 

  • 大小: 7.6 KB
分享到:
评论

相关推荐

    nodejs实现遍历文件夹并统计文件大小

    实现遍历文件夹功能的代码中,使用了`fs.readdirSync`方法,该方法同步读取目录内容,并返回一个文件名的数组。通过递归调用`readFile`函数,程序能够深入到每一个子目录中继续遍历,对于每一个文件,程序会使用`fs....

    nodejs实现读取本地文件生成目录树

    本篇文章将深入探讨如何使用Node.js实现这一功能。 首先,我们需要了解Node.js的fs模块。fs模块是Node.js的核心模块,提供了异步和同步的文件系统操作方法,如读取、写入、创建、删除文件和目录等。要读取本地目录...

    git2.43+nodejs+vscode

    总之,Git 2.43、Node.js和VSCode的组合是现代Web开发中的常用工具集,它们各自提供了强大的功能,而当它们协同工作时,可以创建出高效、灵活的开发环境。无论是个人开发还是团队协作,这样的组合都能够满足大多数...

    NodeJs实现读取目录文件,以及文件批量生成

    NodeJs实现读取目录文件(node dir_new list),以及文件批量生成(node dir_new)

    Node.js-优秀实用的VSCode插件集合

    9. **VSCode Icons**: 为你的项目文件和文件夹提供美观的图标,使得代码库看起来更加清晰有序。 10. **Code Spell Checker**: 检查代码中的拼写错误,避免因拼写错误导致的不必要的问题。 11. **REST Client**: 在...

    xugaoyi#vuepress-theme-vdoing#01.nodejs递归读取所有文件1

    title: nodejs递归读取所有文件- 技术nodejs递归读取所有文件var path = require('path');function readF

    保姆级教程:VsCode调试docker中的NodeJS程序.doc

    在 NodeJS 开发中,VsCode 是一个非常流行的选择,因为它提供了强大的调试功能。在 Docker 中运行 NodeJS 程序时,如何使用 VsCode 进行调试是一个非常重要的问题,本文将介绍如何使用 VsCode 调试 Docker 中的 ...

    一个用NodeJS实现的FtpServce

    一个用NodeJS实现的Ftp Servce

    nodejs读取图片返回给浏览器显示

    而createReadStream则提供了一个流式读取文件的方式,适合读取大文件或提供文件下载服务,这样可以实现断点续传功能。 在读取文件之前,我们需要根据请求的URL确定实际的文件路径。如果请求的文件不存在,应当返回...

    vscode-debug-nodejs-es6, 如何使用VSCode调试 ES6 NodeJS.zip

    vscode-debug-nodejs-es6, 如何使用VSCode调试 ES6 NodeJS vscode-debug-nodejs-es6如何使用VSCode调试 ES6 NodeJS 先决条件VSCode: http://code.visualstudio.com/NodeJS: https://nodejs.o

    nodejs实现爬图功能

    使用nodejs下载网站中的图片,nodejs爬图

    课程大作业-基于Nodejs实现的简单记账本案例源码(含登录注册功能).zip

    1.项目代码功能经验证ok,确保稳定可靠运行。欢迎下载使用! 2.主要针对各个计算机相关专业,包括计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网等领域的在校学生、专业教师或企业员工使用。 3.项目...

    Node.JS 循环递归复制文件夹目录及其子文件夹下的所有文件

    在Node.js环境下,循环递归复制文件夹以及其子文件夹下的所有文件,可以通过使用Node.js内置的fs模块来实现。fs模块提供了文件系统操作的API,包括读取、写入、创建和删除文件等。递归复制文件夹的关键在于能够遍历...

    nodejs实现websocket服务与html+js聊天通信示例

    nodejs实现websocket服务与html+js聊天通信示例 1.先装一个nodeJs的模块,叫nodejs-websocket . 2.直接在nodeJs命令行中敲入:npm install nodejs-websocket回车就可以安装好了. 3.开始建立服务器了,因为有了nodejs...

    NodeJs实现水仙花数

    NodeJs实现水仙花数,模块化

    nodejs ssh2基本功能的封装

    nodejs ssh2基本功能的封装,连接,下载,上传文件,下载文件,上传文件夹,下载文件夹,创建目录,删除目录,运行shell命令

    一个文件夹解决nvm和nodejs

    在实际操作中,你可能需要查看这个文件夹的内容,根据其中的说明来完成NVM的安装和配置。 为了正确安装和使用NVM,你可以按照以下步骤进行: 1. 下载并解压NVM for Windows到你选择的目录。 2. 配置环境变量:设置...

    vsCode与nodejs程序安装包.zip

    标题"vsCode与nodejs程序安装包.zip"暗示了这是一个包含Visual Studio Code(简称vsCode)编辑器和Node.js程序安装文件的压缩包。vsCode是微软开发的一款强大的源代码编辑器,支持多种编程语言,具有丰富的插件系统...

    vscode-MongoSnippets-NodeJS:VSCode扩展-Mongo片段

    vscode-id: 此Visual Studio Code扩展是为Node-js项目构建的。 它提供: MongoDB连接和查询的代码段。 命令面板功能设置样板代码。 猫鼬模型的完成建议。 直接从编辑器连接Mongo Connect 。 目录: 产品特点 ...

    nodejs实现获取本地文件夹下图片信息功能示例

    本示例详细介绍了如何利用Node.js的内置模块和第三方库来实现这一功能。 首先,我们导入了Node.js的核心模块`fs`,它提供了与文件系统交互的能力。`fs.readdirSync()`方法用于同步读取指定目录下的文件和子目录,...

Global site tag (gtag.js) - Google Analytics