Skip to content

How to bulk convert file names using Node.js

I had the need to convert my folders structure from something like this:

to this:

removing the folder that contains an index.md file, and instead have the markdown file itself have the post slug (the part that’s used as the post URL).

I used a Node.js script to do this.

Here it is:

const fs = require('fs')
const glob = require('glob')

const root_folder = '.' //search in the current folder

glob(root_folder + '/**/index.md', (err, files) => {
  if (err) {
    console.log('Error', err)
  } else {
    for (const file_path of files) {
      const match = file_path.match(/\/(.*?)\//)
      const folder_name = match[1]

      fs.copyFile(file_path, './' + folder_name + '.md', (err) => {
        if (err) {
          console.log('Error Found:', err)
        } else {
          console.log('File moved!')
        }
      })
    }
  }
})
→ Get my Node.js Handbook

I wrote 17 books to help you become a better developer, download them all at $0 cost by joining my newsletter

  • C Handbook
  • Command Line Handbook
  • CSS Handbook
  • Express Handbook
  • Git Cheat Sheet
  • Go Handbook
  • HTML Handbook
  • JS Handbook
  • Laravel Handbook
  • Next.js Handbook
  • Node.js Handbook
  • PHP Handbook
  • Python Handbook
  • React Handbook
  • SQL Handbook
  • Svelte Handbook
  • Swift Handbook

JOIN MY CODING BOOTCAMP, an amazing cohort course that will be a huge step up in your coding career - covering React, Next.js - next edition February 2025

Bootcamp 2025

Join the waiting list