Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

207
Vistas
Encuentra la carpeta más nueva en un directorio con NodeJS

Necesito encontrar una manera de crear la carpeta más nueva en un directorio. Por lo general, hay de 3 a 5 carpetas diferentes dentro de una carpeta, y quiero encontrar la más nueva ya sea por nombre de carpeta (numeración de versión más reciente) o fecha y hora de creación. Generalmente, el nombre de la carpeta sería así:

version-0101xxxxxxxxxxxx

(x representando la versión más reciente)

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Puede obtener directorios con ' fs ' usando ' readdirSync ', luego mirar dentro de cada directorio recursivamente.

Este fragmento de código se extrae de ( esta pregunta respondida ):

 const fs = require('fs'); const path = require('path'); function flatten(lists) { return lists.reduce((a, b) => a.concat(b), []); } function getDirectories(srcpath) { return fs.readdirSync(srcpath) .map(file => path.join(srcpath, file)) .filter(path => fs.statSync(path).isDirectory()); } function getDirectoriesRecursive(srcpath) { return [srcpath, ...flatten(getDirectories(srcpath).map(getDirectoriesRecursive))]; } let dirs = getDirectoriesRecursive(__dirname); console.info(path);

Esto le dará una matriz con todos los directorios, luego solo necesita hacer un bucle en su matriz con la condición que necesita.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Puede usar el módulo fs incorporado de node.js para esto. En primer lugar, debe enumerar todos los archivos y carpetas en el directorio que desea buscar.

 let dirs = await fs.readdir(dirName, { withFileTypes: true, });

Puede usar fs.promises.readdir para esto. Asegúrese de agregar la opción "withFileTypes" porque brinda información adicional que puede usar para distinguir carpetas de archivos. A continuación, puede filtrar todos los archivos de esta manera:

 dirs = dirs.filter((file) => file.isDirectory()).map((dirent) => dirent.name);

Esto le da un resultado como ["primera carpeta", "segunda carpeta", etc.] Y luego puede recorrer la matriz anterior y encontrar la carpeta más nueva usando el método fs.promises.stat

 let newestFolder = await fs.stat(path.join(dirName, dirs[0])); let newestFolderName = dirs[0]; for (let directory of dirs) { const stats = await fs.stat(path.join(dirName, directory)); if (stats.ctimeMs > newestFolder.ctimeMs) { newestFolder = stats; newestFolderName = directory; } }

Y luego puede crear la ruta absoluta de ese directorio usando el módulo de ruta:

 const absoultePath = path.resolve(path.join(dirName, newestFolderName));

Así es como se ve la función usando promesas :

 const fs = require("fs/promises"); const path = require("path"); async function getNewestDirectory(dirName) { let dirs = await fs.readdir(dirName, { withFileTypes: true, }); dirs = dirs.filter((file) => file.isDirectory()).map((dirent) => dirent.name); let newestFolder = await fs.stat(path.join(dirName, dirs[0])); let newestFolderName = dirs[0]; for (let directory of dirs) { const stats = await fs.stat(path.join(dirName, directory)); if (stats.ctimeMs > newestFolder.ctimeMs) { newestFolder = stats; newestFolderName = directory; } } console.log("newestFolder", newestFolder); console.log("newestFolderName", newestFolderName); return path.resolve(path.join(dirName, newestFolderName)); }

y utilizando un enfoque síncrono (no recomendado):

 const fs = require("fs"); let dirs = fs.readdirSync(".", { withFileTypes: true, }); dirs = dirs.filter((file) => file.isDirectory()).map((dirent) => dirent.name); let newestFolder = fs.statSync(dirs[0]); let newestFolderName = dirs[0]; for (let directory of dirs) { const stats = fs.statSync(directory); if (stats.ctimeMs > newestFolder.ctimeMs) { newestFolder = stats; newestFolderName = directory; } console.log("newestFolder", newestFolder); console.log("newestFolderName", newestFolderName); }
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda