Go修改文件名

在生活中咱們每每有這樣的需求,就是從網上找的文件資源常常包含了一些無用信息,並且在它的子目錄下也一樣存在,若是咱們手動一個個的修改的話會特別麻煩,也特別耗時,咱們能夠考慮把這件事交給計算機來作。
以下圖,個人桌面有一個名爲dir【我愛你】的目錄,並且這個目錄下的子目錄和文件都包含【我愛你】,這個【我愛你】對於咱們來講是徹底無用的,咱們能夠用Go的文件操做庫來遞歸對文件進行重命名,把不須要的名字替換爲空
ide

示例代碼:blog

package main

import (
	"bufio"
	"fmt"
	"io/ioutil"
	"log"
	"os"
	"strings"
)

var pathSeparator = string(os.PathSeparator)

/**
 * 文件重命名
 */
func rename(path string, old string, new string) (err error) {
	files, err := ioutil.ReadDir(path)
	if err != nil {
		return err
	}
	for _, fileInfo := range files {
		if fileInfo.IsDir() {
			err = rename(path+pathSeparator+fileInfo.Name(), old, new)
			if err != nil {
				return err
			}
			err = os.Rename(path+pathSeparator+fileInfo.Name(), path+pathSeparator+strings.Replace(fileInfo.Name(), old, new, -1))
			if err != nil {
				return err
			}
		} else {
			err = os.Rename(path+pathSeparator+fileInfo.Name(), path+pathSeparator+strings.Replace(fileInfo.Name(), old, new, -1))
			if err != nil {
				return err
			}
		}
	}
	return err
}

func main() {

	//1.獲取要被重命名目錄(文件)的絕對路徑
	fmt.Print("請輸入文件的絕對路徑:")
	reader := bufio.NewReader(os.Stdin)
	filePath, _ := reader.ReadString('\n')
	filePath = strings.Replace(filePath, "\n", "", -1)

	//2.獲取要被替換掉的名稱
	fmt.Print("請輸入要被替換爲空的名稱:")
	reader = bufio.NewReader(os.Stdin)
	name, _ := reader.ReadString('\n')
	name = strings.Replace(name, "\n", "", -1)

	//3.遞歸調用重命名
	err := rename(filePath, name, "")
	if err != nil {
		log.Fatalf("發生錯誤,錯誤爲:%v\n", err)
	}
	err = os.Rename(filePath, strings.Replace(filePath, name, "", -1))
	if err != nil {
		log.Fatalf("發生錯誤,錯誤爲:%v\n", err)
	}

	fmt.Println("success")
}

運行代碼遞歸

查看結果資源

相關文章
相關標籤/搜索