Привет! Как в Node.js найти файл(ы) (или проверить его/их существование), зная только часть его имени?
Н-р, мы хотим узнать существует ли в директории "/path/" файл(ы) с именем, в котором присутствует строка "298AA5B8".
В зависимости от ситуации требуется вывести либо только самый последний файл, либо список всех файлов в названии которых есть указанная строка (отсортированный по времени).
Допустим, в директории "/path/" имеются следующие файлы:
- AJSDA484_LFK4883G_20049562.txt
- AJSDA484_LFK4883G_20037853.txt
- LFK4883G_AJSDA484_20037853.txt
- 298AA5B8_AJSDA484_18477588.txt
- LFK4883G_298AA5B8_93874223.txt
... может быть оооооочень много файлов
Предполагаемая реализация:
const fs = require("fs");
const string = '298AA5B8';
fs.findFile('/path/', string, function(error, result){
if (error) {
console.log("Файл не найден");
} else {
console.log(result);
//298AA5B8_AJSDA484_18477588.txt — самый последний добавленный файл с разыскиваемой строкой в имени
}
});
Важно чтобы функция сразу заканчивала свою работу как найдёт первое вхождение.
Если надо все файлы, где встречается строка в имени, то предполагаемая реализация такая:
const fs = require("fs");
const string = '298AA5B8';
fs.findFiles('/path/', string, function(error, result){
if (error) {
console.log("Файл не найден");
} else {
console.log(result);
//Выведет массив файлов
//['298AA5B8_AJSDA484_18477588.txt','LFK4883G_298AA5B8_93874223.txt'];
}
});
В настоящий момент удалось найти только поиск по конкретному названию файла:
const fs = require("fs");
fs.access("filename.txt", function(error){
if (error) {
console.log("Файл не найден");
} else {
console.log("Файл найден");
}
});
или
const fs = require("fs");
fs.stat("filename.txt", function(err, stats) {
if (err) {
console.log("Файл не найден");
} else {
console.log("Файл найден");
}
});
Существует ли в Node.js функциональность, чтобы найти файл/ы (или проверить их существование), зная только часть их имени?
P.S. аналогия здесь может быть с SQL:
"SELECT * FROM files WHERE param1 = 'string' OR param2 = 'string' ORDER BY time DESC LIMIT 1";
или для массива файлов:
"SELECT * FROM files WHERE param1 = 'string' OR param2 = 'string' ORDER BY time DESC";