Показать сообщение отдельно
  #2 (permalink)  
Старый 20.12.2022, 19:24
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,734

Сообщение от webgraph
Существует ли в Node.js функциональность, чтобы найти файл/ы (или проверить их существование), зная только часть их имени?
Найдите все файлы в директории и ищите среди них те, которые вам нужны.

Я бы сделал как-то так (код накидал на коленке и не проверял вовсе):
import {readdir} from 'node:fs/promises';

let index = {};

export function clearCache() {
    index = {};
}

export async function findFiles(path, needle, amountOfFiles = null, shouldThrowAnError = false) {
    let result = [];

    try {
        index[path] ??= await readdir(path);
        if (index[path] instanceof Error) {
            throw index[path];
        }

        for (const file of index[path]) {
            if (file.includes(needle)) {
                result.push(file);
            }

            if (amountOfFiles != null && result.length >= amountOfFiles) {
                break;
            }
        }
    } catch (err) {
        index[path] = err;

        if (shouldThrowAnError) {
            throw err;
        }
    }

    return result;
}

findFiles('/path', '298AA5B8');
// ['298AA5B8_AJSDA484_18477588.txt','LFK4883G_298AA5B8_93874223.txt']

findFiles('/path', '298AA5B8', 1);
// ['298AA5B8_AJSDA484_18477588.txt']

clearCache();
Ответить с цитированием