欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用Go語言開發(fā)一個命令行文件管理工具

 更新時間:2025年02月24日 15:44:15   作者:白僧  
這篇文章主要為大家詳細介紹了如何使用Go語言開發(fā)一款命令行文件管理工具,支持批量重命名,刪除,創(chuàng)建,移動文件,需要的小伙伴可以了解下

導(dǎo)語

還在為繁瑣的文件操作煩惱嗎?今天教你用Go語言開發(fā)一款命令行文件管理工具,支持批量重命名、刪除、創(chuàng)建、移動文件,解放雙手,提升效率!文末附完整源碼,建議收藏!

一、工具功能一覽

  • 批量重命名:支持正則表達式匹配文件名
  • 批量刪除:按正則表達式刪除文件
  • 創(chuàng)建文件/目錄:一鍵創(chuàng)建文件或目錄
  • 批量移動:將匹配文件移動到指定目錄

二、核心代碼解析

1. 主程序結(jié)構(gòu)

func main() {
    // 定義子命令
    renameCmd := flag.NewFlagSet("rename", flag.ExitOnError)
    deleteCmd := flag.NewFlagSet("delete", flag.ExitOnError)
    createCmd := flag.NewFlagSet("create", flag.ExitOnError)
    moveCmd := flag.NewFlagSet("move", flag.ExitOnError)

    // 解析命令行參數(shù)
    switch os.Args[1] {
    case "rename":
        renameCmd.Parse(os.Args[2:])
        renameFiles(*renamePattern, *renameReplacement)
    case "delete":
        deleteCmd.Parse(os.Args[2:])
        deleteFiles(*deletePattern)
    case "create":
        createCmd.Parse(os.Args[2:])
        createFileOrDir(*createPath, *createIsDir)
    case "move":
        moveCmd.Parse(os.Args[2:])
        moveFiles(*moveSource, *moveTarget)
    default:
        fmt.Println("Expected subcommands: rename, delete, create, or move")
        os.Exit(1)
    }
}

2. 批量重命名

func renameFiles(pattern, replacement string) {
    regex, err := regexp.Compile(pattern)
    if err != nil {
        log.Fatalf("Invalid regex pattern: %v", err)
    }

    filepath.Walk(".", func(path string, info os.FileInfo, err error) error {
        if regex.MatchString(info.Name()) {
            newName := regex.ReplaceAllString(info.Name(), replacement)
            newPath := filepath.Join(filepath.Dir(path), newName)
            fmt.Printf("Renaming %s to %s\n", path, newPath)
            return os.Rename(path, newPath)
        }
        return nil
    })
}

使用示例

# 將所有.txt文件重命名為.md
go run main.go rename -pattern="\.txt$" -replace=".md"

3. 批量刪除

func deleteFiles(pattern string) {
    regex, err := regexp.Compile(pattern)
    if err != nil {
        log.Fatalf("Invalid regex pattern: %v", err)
    }

    filepath.Walk(".", func(path string, info os.FileInfo, err error) error {
        if regex.MatchString(info.Name()) {
            fmt.Printf("Deleting %s\n", path)
            return os.Remove(path)
        }
        return nil
    })
}

使用示例

# 刪除所有.log文件
go run main.go delete -pattern="\.log$"

4. 創(chuàng)建文件/目錄

func createFileOrDir(path string, isDir bool) {
    if isDir {
        err := os.MkdirAll(path, 0755)
        if err != nil {
            log.Fatalf("Error creating directory: %v", err)
        }
        fmt.Printf("Created directory: %s\n", path)
    } else {
        file, err := os.Create(path)
        if err != nil {
            log.Fatalf("Error creating file: %v", err)
        }
        defer file.Close()
        fmt.Printf("Created file: %s\n", path)
    }
}

使用示例

# 創(chuàng)建目錄
go run main.go create -path="new_dir" -dir

# 創(chuàng)建文件
go run main.go create -path="new_file.txt"

5. 批量移動

func moveFiles(sourcePattern, targetDir string) {
    regex, err := regexp.Compile(sourcePattern)
    if err != nil {
        log.Fatalf("Invalid regex pattern: %v", err)
    }

    os.MkdirAll(targetDir, 0755)

    filepath.Walk(".", func(path string, info os.FileInfo, err error) error {
        if regex.MatchString(info.Name()) {
            newPath := filepath.Join(targetDir, info.Name())
            fmt.Printf("Moving %s to %s\n", path, newPath)
            return os.Rename(path, newPath)
        }
        return nil
    })
}

使用示例

# 將所有.jpg文件移動到images目錄
go run main.go move -source="\.jpg$" -target="images"

三、如何安裝使用

安裝Go環(huán)境(參考前文教程)

編譯運行

go build -o file-manager
./file-manager [command] [flags]

以上就是使用Go語言開發(fā)一個命令行文件管理工具的詳細內(nèi)容,更多關(guān)于Go文件管理工具的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Goland 斷點調(diào)試Debug的操作

    Goland 斷點調(diào)試Debug的操作

    這篇文章主要介紹了Goland 斷點調(diào)試Debug的操作方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • golang 對私有函數(shù)進行單元測試的實例

    golang 對私有函數(shù)進行單元測試的實例

    這篇文章主要介紹了golang 對私有函數(shù)進行單元測試的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-05-05
  • golang并發(fā)編程中Goroutine 協(xié)程的實現(xiàn)

    golang并發(fā)編程中Goroutine 協(xié)程的實現(xiàn)

    Go語言中的協(xié)程是一種輕量級線程,通過在函數(shù)前加go關(guān)鍵字來并發(fā)執(zhí)行,具有動態(tài)棧、快速啟動和低內(nèi)存使用等特點,本文就來詳細的介紹一下,感興趣的可以了解一下
    2024-10-10
  • Go語言生成隨機數(shù)的方法

    Go語言生成隨機數(shù)的方法

    這篇文章主要介紹了Go語言生成隨機數(shù)的方法,實例分析了Go語言生成隨機數(shù)的原理與實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-02-02
  • Go語言中Select語句用法實例

    Go語言中Select語句用法實例

    這篇文章主要介紹了Go語言中Select語句用法,實例分析了select語句的原理與使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-02-02
  • golang 語言中錯誤處理機制

    golang 語言中錯誤處理機制

    Golang 的錯誤處理方式可能和這些你熟悉的語言有所不同,今天通過本文給大家分享golang 語言中錯誤處理機制,感興趣的朋友一起看看吧
    2021-08-08
  • go1.21中slog日志包用法入門

    go1.21中slog日志包用法入門

    go1.21中,slog這一被Go語言團隊精心設(shè)計的結(jié)構(gòu)化日志包正式落地,本文將帶領(lǐng)讀者上手slog,體會其與傳統(tǒng)log的差異,感興趣的小伙伴快跟隨小編一起學(xué)習(xí)一下吧
    2023-09-09
  • 詳解以go思想去處理js異常拋棄trycatch

    詳解以go思想去處理js異常拋棄trycatch

    這篇文章主要為大家介紹了詳解以go思想去處理js異常拋棄trycatch,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • Golang實現(xiàn)SSH、SFTP操作小結(jié)

    Golang實現(xiàn)SSH、SFTP操作小結(jié)

    在日常的一些開發(fā)場景中,我們需要去和遠程服務(wù)器進行一些通信,本文主要介紹了Golang實現(xiàn)SSH、SFTP操作小結(jié),具有一定的參考價值,感興趣的可以了解一下
    2024-04-04
  • Go語言metrics應(yīng)用監(jiān)控指標(biāo)基本使用說明

    Go語言metrics應(yīng)用監(jiān)控指標(biāo)基本使用說明

    這篇文章主要為大家介紹了Go語言metrics應(yīng)用監(jiān)控指標(biāo)的基本使用說明,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2022-02-02

最新評論