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!')
}
})
}
}
})
→ Here's my latest YouTube video
→ 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
→ 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