Cómo renombrar archivos de forma masiva en Node.js

 

 

 

Descubra cómo cambiar el nombre de un conjunto de archivos utilizando Node.js

En esta entrada de blog voy a explicar cómo cambiar el nombre de un conjunto de archivos.

El mismo proceso funciona para mover archivos a otra carpeta, porque cuando cambias el nombre cambias la ruta del archivo.

La motivación para esta tarea fue la siguiente: en Hugo podemos escribir publicaciones de blog como archivos, como este:

first-post.mdsecond-post.mdthird-post.md

También podemos agregarlos a una carpeta que contenga un index.mdarchivo:

first-post/ index.mdsecond-post/ index.mdthird-post/ index.md

La diferencia es que con la carpeta podemos añadir imágenes y asociarlas más fácilmente a una entrada del blog.

 

Podría haber hecho el cambio manualmente, pero tenía alrededor de 50 archivos en la carpeta y realmente no quería hacer ese trabajo.

Quería que sucediera automáticamente.

Comencemos solicitando un módulo principal que vamos a utilizar: fs. Como es un módulo principal, no es necesario npm install.

const fs = require('fs')

Luego, obtenemos una referencia a la carpeta actual. Supongo que vamos a ejecutar el script en la misma carpeta donde queremos realizar este cambio.

__dirnamees la variable que siempre apunta a la carpeta de trabajo actual.

Obtengo una lista de todos los archivos y carpetas:

const files = fs.readdirSync(__dirname)

Luego filtro solo los elementos que terminan con .md:

for (const file of files) { if (file.endsWith('.md')) { console.log(file) }}

Una vez que tenemos la filereferencia, que representa el nombre del archivo, podemos llamar fs.mkdirSync()para crear la carpeta:

fs.mkdirSync( __dirname + '/' + file.replace('.md', ''), { recursive: true }, (err) = { console.log(err) })

Una vez que creamos la carpeta, llamamos fs.renameSync().

La razón por la que utilizo las versiones de bloqueo mkdirSync() y renameSync()en lugar de mkdir()y rename()es que quiero esperar hasta que se cree la carpeta antes de mover el archivo a la carpeta. De lo contrario, podríamos obtener errores si la segunda función se ejecuta antes que la segunda (yo usaría awaitpero la API de Node.js no usa promesas, tendríamos que usar promisify pero es más simple usar la versión de bloqueo de esas API). Fotos Porno y actrices porno

La fs.renameSync()función acepta 3 parámetros:

  1. La ruta actual
  2. El camino que queremos seguir
  3. Se activa una devolución de llamada si hay un error.

La ruta actual es:

__dirname + '/' + file

El camino que queremos recorrer es:

__dirname + '/' + file.replace('.md', '') + '/index.md'

¿Ves? Creamos una nueva carpeta a partir del nombre del archivo y luego agregamos index.md:

fs.renameSync( __dirname + '/' + file, __dirname + '/' + file.replace('.md', '') + '/index.md', err = { console.log(err) })

Aquí está el código completo:

const fs = require('fs')const files = fs.readdirSync(__dirname)for (const file of files) { if (file.endsWith('.md')) { fs.mkdirSync( __dirname + '/' + file.replace('.md', ''), { recursive: true }, (err) = { console.log(err) } ) fs.renameSync( __dirname + '/' + file, __dirname + '/' + file.replace('.md', '') + '/index.md', (err) = { console.log(err) } ) }}

Tips de Node.js




Tal vez te puede interesar:

  1. Cómo gestionar la carga de archivos en Node.js
  2. Cómo usar promesas y esperar con funciones basadas en devolución de llamadas de Node.js
  3. Cómo obtener los nombres de todos los archivos en una carpeta en Node
  4. Cómo comprobar la versión actual de Node.js en tiempo de ejecución

Cómo renombrar archivos de forma masiva en Node.js

Cómo renombrar archivos de forma masiva en Node.js

En esta entrada de blog voy a explicar cómo cambiar el nombre de un conjunto de archivos. Descubra cómo cambiar el nombre de un conjunto de archivos utilizan

programar

es

https://aprendeprogramando.es/static/images/programar-como-renombrar-archivos-de-forma-masiva-en-node-2339-0.jpg

2024-10-18

 

Cómo renombrar archivos de forma masiva en Node.js
Cómo renombrar archivos de forma masiva en Node.js

Si crees que alguno de los contenidos (texto, imagenes o multimedia) en esta página infringe tus derechos relativos a propiedad intelectual, marcas registradas o cualquier otro de tus derechos, por favor ponte en contacto con nosotros en el mail [email protected] y retiraremos este contenido inmediatamente

 

 

Update cookies preferences