How to rename all files in a directory with Go

In this article I will show you How to rename all files in a directory with Go.

Read all files in an directory

files, err := ioutil.ReadDir("/Users/azzamjiul/Code/scripts/raw")
if err != nil {
    println(err.Error())
}

Make rename function

func rename_file(original_path string, new_path string) {
	e := os.Rename(original_path, new_path)
	if e != nil {
		println(e.Error())
	}
	println(original_path, new_path)
}

For loop then rename it

var filename string
var filenameNew string
var original_path string
var new_path string

for _, file := range files {
	filename = file.Name()
	filenameNew = strings.Split(filename, "_")[1]
	println(filename, filenameNew)
	original_path = "/Users/azzamjiul/Code/scripts/raw/" + filename
	new_path = "/Users/azzamjiul/Code/scripts/after_raw/" + filenameNew
	rename_file(original_path, new_path)
}

Full source code to rename all files in a directory with Go

package main

import (
	"io/ioutil"
	"os"
	"strings"
)

func rename_file(original_path string, new_path string) {
	e := os.Rename(original_path, new_path)
	if e != nil {
		println(e.Error())
	}
	println(original_path, new_path)
}

func main() {
	files, err := ioutil.ReadDir("/Users/azzamjiul/Code/scripts/raw")
	if err != nil {
		println(err.Error())
	}

	var filename string
	var filenameNew string
	var original_path string
	var new_path string

	for _, file := range files {
		filename = file.Name()
		filenameNew = strings.Split(filename, "_")[1]
		println(filename, filenameNew)
		original_path = "/Users/azzamjiul/Code/scripts/raw/" + filename
		new_path = "/Users/azzamjiul/Code/scripts/after_raw/" + filenameNew
		rename_file(original_path, new_path)
	}
}

Leave a Comment