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!')
}
})
}
}
})
→ Get my Node.js Handbook
→ I wrote 17 books to help you become a better developer:
- 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
Also, 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