import fs from "fs";
import path from "path";

const find = (
  folder: string,
  keyword: string[],
  callback: (val: string[]) => void
) => {
  type entryUnit = {
    name: string;
    fullPath: string;
  };
  let arr: entryUnit[] = []; // all the files in a array

  const iterateDir = (base: string) => {
    const curDir = fs.readdirSync(base);
    curDir.forEach((val) => {
      const entry = path.join(base, val);
      if (fs.statSync(entry).isDirectory()) {
        iterateDir(entry);
      } else {
        arr.push({
          name: val,
          fullPath: entry,
        });
      }
    });
  };

  iterateDir(folder);

  callback(
    arr
      .filter((val) => keyword.find((key) => val.name === key))
      .map((val) => val.fullPath)
  );
};

find("./", ["index.html", "qq.png"], (arr) => {
  console.log(arr);
});

自定义过滤器:

const find = (folder, filter, callback) => {
  let arr = []; // all the files in a array

  const iterateDir = (base) => {
    const curDir = fs.readdirSync(base);
    curDir.forEach((val) => {
      const entry = path.join(base, val);
      if (fs.statSync(entry).isDirectory()) {
        iterateDir(entry);
      } else {
        arr.push({
          name: val,
          fullPath: entry,
        });
      }
    });
  };

  iterateDir(folder);

  callback(arr.filter(filter).map((val) => val.fullPath));
};

find(
  "./",
  (val) => {
    return false;
  },
  (arr) => {
    console.log(arr);
  }
);

 

 posted on 2022-11-12 11:10  laremehpe  阅读(249)  评论(0编辑  收藏  举报