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:

  • posts/test/index.md
  • posts/hey-cool-post/index.md

to this:

  • posts/test.md
  • posts/hey-cool-post.md

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!')
        }
      })
    }
  }
})
β†’ Download my free Node.js Handbook!

THE VALLEY OF CODE

THE WEB DEVELOPER's MANUAL

You might be interested in those things I do:

  • Learn to code in THE VALLEY OF CODE, your your web development manual
  • Find a ton of Web Development projects to learn modern tech stacks in practice in THE VALLEY OF CODE PRO
  • I wrote 16 books for beginner software developers, DOWNLOAD THEM NOW
  • Every year I organize a hands-on cohort course coding BOOTCAMP to teach you how to build a complex, modern Web Application in practice (next edition February-March-April-May 2024)
  • Learn how to start a solopreneur business on the Internet with SOLO LAB (next edition in 2024)
  • Find me on X

Related posts that talk about node: