node queries the path of all files (files or folders) named filename in the target directory

Don't talk much, just go ahead

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

/**
 * 查询目标 目录下所有文件或文件夹名为 filename 的文件路径
 * @param {String} dir  查询目录
 * @param {String} filename  查询文件的名称
 * @returns {Array} 所有满足条件的文件路径
 */
function getAllDirbyFilename(dir, filename) {
    
    
  let dirPath = path.resolve(__dirname, dir);
  let files = fs.readdirSync(dirPath); // 该文件夹下的所有文件名称 (文件夹 + 文件)
  let resultArr = [];

  files.forEach(file => {
    
    
    let filePath = dir + '/' + file; // 当前文件 | 文件夹的路径

    // 满足查询条件文件
    if (file === filename) {
    
    
      return resultArr.push(filePath);
    }

    // 继续深搜文件夹
    if (fs.statSync(filePath).isDirectory()) {
    
    
      resultArr.push(...getAllDirbyFilename(filePath, filename));
    }

  })

  return resultArr;
}

let fileArr = getAllDirbyFilename('./src', 'main.js');
console.log(fileArr);

Guess you like

Origin blog.csdn.net/cc_King/article/details/121252850
Recommended